--- linux/drivers/scsi/sg.c 2003-10-28 09:18:32.000000000 +1000 +++ linux/drivers/scsi/sg.c260t9ma 2003-11-14 20:15:20.000000000 +1000 @@ -243,7 +243,7 @@ Sg_device *sdp; Sg_fd *sfp; int res; - int retval = -EBUSY; + int retval; SCSI_LOG_TIMEOUT(3, printk("sg_open: dev=%d, flags=0x%x\n", dev, flags)); sdp = sg_get_dev(dev); @@ -270,8 +270,10 @@ retval = -EPERM; /* Can't lock it with read only access */ goto error_out; } - if (sdp->headfp && (flags & O_NONBLOCK)) + if (sdp->headfp && (flags & O_NONBLOCK)) { + retval = -EBUSY; goto error_out; + } res = 0; __wait_event_interruptible(sdp->o_excl_wait, ((sdp->headfp || sdp->exclude) ? 0 : (sdp->exclude = 1)), res); @@ -280,8 +282,10 @@ goto error_out; } } else if (sdp->exclude) { /* some other fd has an exclusive lock on dev */ - if (flags & O_NONBLOCK) + if (flags & O_NONBLOCK) { + retval = -EBUSY; goto error_out; + } res = 0; __wait_event_interruptible(sdp->o_excl_wait, (!sdp->exclude), res);