aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sg.c
diff options
context:
space:
mode:
authorJörn Engel <joern@logfs.org>2012-04-12 17:32:48 -0400
committerJames Bottomley <JBottomley@Parallels.com>2012-05-17 05:08:52 -0400
commit794c10fa0fa4d1781c5651c31e3d4d0b71629128 (patch)
treea671c2930cf5ee050f50bb511bfe83ea20c07ccc /drivers/scsi/sg.c
parentdddbf8d908e89afb14a49502f568d2a2b814436d (diff)
[SCSI] sg: remove while (1) non-loop
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>
Diffstat (limited to 'drivers/scsi/sg.c')
-rw-r--r--drivers/scsi/sg.c52
1 files changed, 22 insertions, 30 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 14de8436f07f..be812e09058d 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -398,19 +398,15 @@ sg_read(struct file *filp, char __user *buf, size_t count, loff_t * ppos)
398 retval = -EAGAIN; 398 retval = -EAGAIN;
399 goto free_old_hdr; 399 goto free_old_hdr;
400 } 400 }
401 while (1) { 401 retval = 0; /* following macro beats race condition */
402 retval = 0; /* following macro beats race condition */ 402 __wait_event_interruptible(sfp->read_wait,
403 __wait_event_interruptible(sfp->read_wait, 403 (sdp->detached ||
404 (sdp->detached || 404 (srp = sg_get_rq_mark(sfp, req_pack_id))), retval);
405 (srp = sg_get_rq_mark(sfp, req_pack_id))), 405 if (sdp->detached) {
406 retval); 406 retval = -ENODEV;
407 if (sdp->detached) { 407 goto free_old_hdr;
408 retval = -ENODEV; 408 }
409 goto free_old_hdr; 409 if (retval) {
410 }
411 if (0 == retval)
412 break;
413
414 /* -ERESTARTSYS as signal hit process */ 410 /* -ERESTARTSYS as signal hit process */
415 goto free_old_hdr; 411 goto free_old_hdr;
416 } 412 }
@@ -801,25 +797,21 @@ sg_ioctl(struct file *filp, unsigned int cmd_in, unsigned long arg)
801 1, read_only, 1, &srp); 797 1, read_only, 1, &srp);
802 if (result < 0) 798 if (result < 0)
803 return result; 799 return result;
804 while (1) { 800 result = 0; /* following macro to beat race condition */
805 result = 0; /* following macro to beat race condition */ 801 __wait_event_interruptible(sfp->read_wait,
806 __wait_event_interruptible(sfp->read_wait, 802 (srp->done || sdp->detached), result);
807 (srp->done || sdp->detached), 803 if (sdp->detached)
808 result); 804 return -ENODEV;
809 if (sdp->detached) 805 write_lock_irq(&sfp->rq_list_lock);
810 return -ENODEV; 806 if (srp->done) {
811 write_lock_irq(&sfp->rq_list_lock); 807 srp->done = 2;
812 if (srp->done) {
813 srp->done = 2;
814 write_unlock_irq(&sfp->rq_list_lock);
815 break;
816 }
817 srp->orphan = 1;
818 write_unlock_irq(&sfp->rq_list_lock); 808 write_unlock_irq(&sfp->rq_list_lock);
819 return result; /* -ERESTARTSYS because signal hit process */ 809 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp);
810 return (result < 0) ? result : 0;
820 } 811 }
821 result = sg_new_read(sfp, p, SZ_SG_IO_HDR, srp); 812 srp->orphan = 1;
822 return (result < 0) ? result : 0; 813 write_unlock_irq(&sfp->rq_list_lock);
814 return result; /* -ERESTARTSYS because signal hit process */
823 case SG_SET_TIMEOUT: 815 case SG_SET_TIMEOUT:
824 result = get_user(val, ip); 816 result = get_user(val, ip);
825 if (result) 817 if (result)