summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn Baldwin <jhb@FreeBSD.org>2020-09-30 18:09:50 +0000
committerJohn Baldwin <jhb@FreeBSD.org>2020-09-30 18:09:50 +0000
commite8b3592d6a41b52b2d834680a928c389c5253344 (patch)
treeb95c8dae1e1e8b749b929e84acd8c00bcaeb658b
parent7f403387b28b46031fe8452e9223c8027a981a5c (diff)
downloadsrc-test2-e8b3592d6a41b52b2d834680a928c389c5253344.tar.gz
src-test2-e8b3592d6a41b52b2d834680a928c389c5253344.zip
Notes
-rw-r--r--sys/cam/scsi/scsi_sg.c25
1 files changed, 1 insertions, 24 deletions
diff --git a/sys/cam/scsi/scsi_sg.c b/sys/cam/scsi/scsi_sg.c
index 08c7489843a2..473db8c34ad5 100644
--- a/sys/cam/scsi/scsi_sg.c
+++ b/sys/cam/scsi/scsi_sg.c
@@ -506,7 +506,6 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
struct cam_periph *periph;
struct sg_softc *softc;
struct sg_io_hdr *req;
- void *data_ptr;
int dir, error;
periph = (struct cam_periph *)dev->si_drv1;
@@ -551,20 +550,12 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
break;
}
- if (req->dxfer_len > MAXPHYS) {
- error = EINVAL;
- break;
- }
-
- data_ptr = malloc(req->dxfer_len, M_DEVBUF, M_WAITOK);
-
ccb = cam_periph_getccb(periph, CAM_PRIORITY_NORMAL);
csio = &ccb->csio;
error = copyin(req->cmdp, &csio->cdb_io.cdb_bytes,
req->cmd_len);
if (error) {
- free(data_ptr, M_DEVBUF);
xpt_release_ccb(ccb);
break;
}
@@ -585,21 +576,12 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
break;
}
- if (dir == CAM_DIR_IN || dir == CAM_DIR_BOTH) {
- error = copyin(req->dxferp, data_ptr, req->dxfer_len);
- if (error) {
- free(data_ptr, M_DEVBUF);
- xpt_release_ccb(ccb);
- break;
- }
- }
-
cam_fill_csio(csio,
/*retries*/1,
sgdone,
dir|CAM_DEV_QFRZDIS,
MSG_SIMPLE_Q_TAG,
- data_ptr,
+ req->dxferp,
req->dxfer_len,
req->mx_sb_len,
req->cmd_len,
@@ -609,7 +591,6 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
if (error) {
req->host_status = DID_ERROR;
req->driver_status = DRIVER_INVALID;
- free(data_ptr, M_DEVBUF);
xpt_release_ccb(ccb);
break;
}
@@ -628,10 +609,6 @@ sgioctl(struct cdev *dev, u_long cmd, caddr_t arg, int flag, struct thread *td)
req->sb_len_wr);
}
- if ((dir == CAM_DIR_OUT || dir == CAM_DIR_BOTH) && error == 0)
- error = copyout(data_ptr, req->dxferp, req->dxfer_len);
-
- free(data_ptr, M_DEVBUF);
xpt_release_ccb(ccb);
break;