]> Pileus Git - ~andy/linux/commitdiff
[SCSI] sg: remove while (1) non-loop
authorJörn Engel <joern@logfs.org>
Thu, 12 Apr 2012 21:32:48 +0000 (17:32 -0400)
committerJames Bottomley <JBottomley@Parallels.com>
Thu, 17 May 2012 09:08:52 +0000 (10:08 +0100)
The while (1) construct isn't actually a loop at all.  So let's not
pretent and obfuscate the code.

Signed-off-by: Joern Engel <joern@logfs.org>
Acked-by: Douglas Gilbert <dgilbert@interlog.com>
Signed-off-by: James Bottomley <JBottomley@Parallels.com>
drivers/scsi/sg.c

index 14de8436f07f25a97bb2993c1b73ee617ad460ac..be812e09058dd1cb2c60e1d27d5b23e6b026cc47 100644 (file)
@@ -398,19 +398,15 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
                        retval = -EAGAIN;
                        goto free_old_hdr;
                }
-               while (1) {
-                       retval = 0; /* following macro beats race condition */
-                       __wait_event_interruptible(sfp->read_wait,
-                               (sdp->detached ||
-                               (srp = sg_get_rq_mark(sfp, req_pack_id))), 
-                               retval);
-                       if (sdp->detached) {
-                               retval = -ENODEV;
-                               goto free_old_hdr;
-                       }
-                       if (0 == retval)
-                               break;
-
+               retval = 0; /* following macro beats race condition */
+               __wait_event_interruptible(sfp->read_wait,
+                       (sdp->detached ||
+                       (srp = sg_get_rq_mark(sfp, req_pack_id))), retval);
+               if (sdp->detached) {
+                       retval = -ENODEV;
+                       goto free_old_hdr;
+               }
+               if (retval) {
                        /* -ERESTARTSYS as signal hit process */
                        goto free_old_hdr;
                }
@@ -801,25 +797,21 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
                                 1, read_only, 1, &srp);
                if (result < 0)
                        return result;
-               while (1) {
-                       result = 0;     /* following macro to beat race condition */
-                       __wait_event_interruptible(sfp->read_wait,
-                               (srp->done || sdp->detached),
-                               result);
-                       if (sdp->detached)
-                               return -ENODEV;
-                       write_lock_irq(&sfp->rq_list_lock);
-                       if (srp->done) {
-                               srp->done = 2;
-                               write_unlock_irq(&sfp->rq_list_lock);
-                               break;
-                       }
-                       srp->orphan = 1;
+               result = 0;     /* following macro to beat race condition */
+               __wait_event_interruptible(sfp->read_wait,
+                       (srp->done || sdp->detached), result);
+               if (sdp->detached)
+                       return -ENODEV;
+               write_lock_irq(&sfp->rq_list_lock);
+               if (srp->done) {
+                       srp->done = 2;
                        write_unlock_irq(&sfp->rq_list_lock);
-                       return result;  /* -ERESTARTSYS because signal hit process */
+                       result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
+                       return (result < 0) ? result : 0;
                }
-               result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
-               return (result < 0) ? result : 0;
+               srp->orphan = 1;
+               write_unlock_irq(&sfp->rq_list_lock);
+               return result;  /* -ERESTARTSYS because signal hit process */
        case SG_SET_TIMEOUT:
                result = get_user(val, ip);
                if (result)