On 01/13/2015 07:53 PM, Pasi Kärkkäinen wrote:
Hi,

On Tue, Jan 13, 2015 at 05:22:58PM +0100, Juergen Gross wrote:
The locking in scsifront_dev_reset_handler() is obviously wrong. In
case of a full ring the host lock is aquired twice.

Fixing this issue enables to get rid of the endless fo loop with an
explicit break statement.


Is this patch needed in upstream Linux kernel aswell, now that Xen PVSCSI 
drivers are in upstream Linux ?

No, especially this part of the code was reorganized and doesn't
have that issue.

Juergen



Thanks,

-- Pasi


Signed-off-by: Juergen Gross <jgr...@suse.com>
---

diff -r 078f1bb69ea5 drivers/xen/scsifront/scsifront.c
--- a/drivers/xen/scsifront/scsifront.c Wed Dec 10 10:22:39 2014 +0100
+++ b/drivers/xen/scsifront/scsifront.c Tue Jan 13 14:32:33 2015 +0100
@@ -447,12 +447,10 @@ static int scsifront_dev_reset_handler(s
        uint16_t rqid;
        int err = 0;

-       for (;;) {
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
-               spin_lock_irq(host->host_lock);
+       spin_lock_irq(host->host_lock);
  #endif
-               if (!RING_FULL(&info->ring))
-                       break;
+       while (RING_FULL(&info->ring)) {
                if (err) {
  #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,12)
                        spin_unlock_irq(host->host_lock);

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel



_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to