aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/sg.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/sg.c')
-rw-r--r--drivers/scsi/sg.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/scsi/sg.c b/drivers/scsi/sg.c
index 7405d0df95db..b098942445ec 100644
--- a/drivers/scsi/sg.c
+++ b/drivers/scsi/sg.c
@@ -748,6 +748,7 @@ sg_common_write(Sg_fd * sfp, Sg_request * srp,
748 /* 748 /*
749 * most likely out of mem, but could also be a bad map 749 * most likely out of mem, but could also be a bad map
750 */ 750 */
751 sg_finish_rem_req(srp);
751 return -ENOMEM; 752 return -ENOMEM;
752 } else 753 } else
753 return 0; 754 return 0;
@@ -1044,7 +1045,7 @@ sg_ioctl(struct inode *inode, struct file *filp,
1044 if (!sg_allow_access(opcode, sdp->device->type)) 1045 if (!sg_allow_access(opcode, sdp->device->type))
1045 return -EPERM; 1046 return -EPERM;
1046 } 1047 }
1047 return scsi_ioctl_send_command(sdp->device, p); 1048 return sg_scsi_ioctl(filp, sdp->device->request_queue, NULL, p);
1048 case SG_SET_DEBUG: 1049 case SG_SET_DEBUG:
1049 result = get_user(val, ip); 1050 result = get_user(val, ip);
1050 if (result) 1051 if (result)
@@ -1798,8 +1799,10 @@ sg_build_direct(Sg_request * srp, Sg_fd * sfp, int dxfer_len)
1798 res = st_map_user_pages(schp->buffer, mx_sc_elems, 1799 res = st_map_user_pages(schp->buffer, mx_sc_elems,
1799 (unsigned long)hp->dxferp, dxfer_len, 1800 (unsigned long)hp->dxferp, dxfer_len,
1800 (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0); 1801 (SG_DXFER_TO_DEV == hp->dxfer_direction) ? 1 : 0);
1801 if (res <= 0) 1802 if (res <= 0) {
1803 sg_remove_scat(schp);
1802 return 1; 1804 return 1;
1805 }
1803 schp->k_use_sg = res; 1806 schp->k_use_sg = res;
1804 schp->dio_in_use = 1; 1807 schp->dio_in_use = 1;
1805 hp->info |= SG_INFO_DIRECT_IO; 1808 hp->info |= SG_INFO_DIRECT_IO;