diff options
author | Jeff Garzik <jeff@garzik.org> | 2006-04-18 05:39:23 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-04-18 05:39:23 -0400 |
commit | 9e73972cef1c0961c78b0e0b61c4ecc275b29f04 (patch) | |
tree | 27907bbd653504d71ff47cb00bdf8cd61e82f126 /drivers/scsi/sg.c | |
parent | a890b15c0990cc8d686edcc85f5fccde71ad5ce9 (diff) | |
parent | 4741c336d27dec3ea68a35659abb8dc82b142388 (diff) |
Merge branch 'upstream'
Diffstat (limited to 'drivers/scsi/sg.c')
-rw-r--r-- | drivers/scsi/sg.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c index 7405d0df95d..b098942445e 100644 --- a/drivers/scsi/sg.c +++ b/drivers/scsi/sg.c @@ -748,6 +748,7 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp, /* * most likely out of mem, but could also be a bad map */ + sg_finish_rem_req(srp); return -ENOMEM; } else return 0; @@ -1044,7 +1045,7 @@ sg_ioctl(struct inode *inode, struct file *filp, if (!sg_allow_access(opcode, sdp->device->type)) return -EPERM; } - return scsi_ioctl_send_command(sdp->device, p); + return sg_scsi_ioctl(filp, sdp->device->request_queue, NULL, p); case SG_SET_DEBUG: result = get_user(val, ip); if (result) @@ -1798,8 +1799,10 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len) res = st_map_user_pages(schp->buffer, mx_sc_elems, (unsigned long)hp->dxferp, dxfer_len, (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0); - if (res <= 0) + if (res <= 0) { + sg_remove_scat(schp); return 1; + } schp->k_use_sg = res; schp->dio_in_use = 1; hp->info |= SG_INFO_DIRECT_IO; |