aboutsummaryrefslogtreecommitdiffstats
path: root/block/scsi_ioctl.c
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2007-01-29 21:18:38 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-01-29 23:32:03 -0500
commitc0d4d573feed199b16094c072e7cb07afb01c598 (patch)
tree106f53f014c334afa3028407a0f7ccf015836ce2 /block/scsi_ioctl.c
parent87df7241bd547da5d4d4a4e5397866dfe422e439 (diff)
[PATCH] Fix SG_IO timeout jiffy conversion
Commit 85e04e371b5a321b5df2bc3f8e0099a64fb087d7 cleaned up the timeout conversion, but did it exactly the wrong way. We get msecs from user space, and should convert them into jiffies. Not the other way around. Here is a fix with the overflow check sg.c has added in. This fixes DVD burnign with Nero. Signed-off-by: Mike Christie <michaelc@cs.wisc.edu> [ "you'll be wanting a comma there" - Andrew ] Cc: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'block/scsi_ioctl.c')
-rw-r--r--block/scsi_ioctl.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/block/scsi_ioctl.c b/block/scsi_ioctl.c
index 2528a0c0dec8..65c6a3cba6d6 100644
--- a/block/scsi_ioctl.c
+++ b/block/scsi_ioctl.c
@@ -223,7 +223,7 @@ static int verify_command(struct file *file, unsigned char *cmd)
223static int sg_io(struct file *file, request_queue_t *q, 223static int sg_io(struct file *file, request_queue_t *q,
224 struct gendisk *bd_disk, struct sg_io_hdr *hdr) 224 struct gendisk *bd_disk, struct sg_io_hdr *hdr)
225{ 225{
226 unsigned long start_time; 226 unsigned long start_time, timeout;
227 int writing = 0, ret = 0; 227 int writing = 0, ret = 0;
228 struct request *rq; 228 struct request *rq;
229 char sense[SCSI_SENSE_BUFFERSIZE]; 229 char sense[SCSI_SENSE_BUFFERSIZE];
@@ -271,7 +271,8 @@ static int sg_io(struct file *file, request_queue_t *q,
271 271
272 rq->cmd_type = REQ_TYPE_BLOCK_PC; 272 rq->cmd_type = REQ_TYPE_BLOCK_PC;
273 273
274 rq->timeout = jiffies_to_msecs(hdr->timeout); 274 timeout = msecs_to_jiffies(hdr->timeout);
275 rq->timeout = (timeout < INT_MAX) ? timeout : INT_MAX;
275 if (!rq->timeout) 276 if (!rq->timeout)
276 rq->timeout = q->sg_timeout; 277 rq->timeout = q->sg_timeout;
277 if (!rq->timeout) 278 if (!rq->timeout)