Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 186d330e authored by Timothy Thelin's avatar Timothy Thelin Committed by James Bottomley
Browse files

[SCSI] scsi: sd, sr, st, and scsi_lib all fail to copy cmd_len to new cmd



This fixes an issue in scsi command initialization from a request
where sd, sr, st, and scsi_lib all fail to copy the request's
cmd_len to the scsi command's cmd_len field.

Signed-off-by: default avatarTimothy Thelin <timothy.thelin@wdc.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent a89f29f6
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -1268,6 +1268,7 @@ static int scsi_prep_fn(struct request_queue *q, struct request *req)
			}
		} else {
			memcpy(cmd->cmnd, req->cmd, sizeof(cmd->cmnd));
			cmd->cmd_len = req->cmd_len;
			if (rq_data_dir(req) == WRITE)
				cmd->sc_data_direction = DMA_TO_DEVICE;
			else if (req->data_len)
+1 −0
Original line number Diff line number Diff line
@@ -235,6 +235,7 @@ static int sd_init_command(struct scsi_cmnd * SCpnt)
			return 0;

		memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
		SCpnt->cmd_len = rq->cmd_len;
		if (rq_data_dir(rq) == WRITE)
			SCpnt->sc_data_direction = DMA_TO_DEVICE;
		else if (rq->data_len)
+1 −0
Original line number Diff line number Diff line
@@ -326,6 +326,7 @@ static int sr_init_command(struct scsi_cmnd * SCpnt)
			return 0;

		memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
		SCpnt->cmd_len = rq->cmd_len;
		if (!rq->data_len)
			SCpnt->sc_data_direction = DMA_NONE;
		else if (rq_data_dir(rq) == WRITE)
+1 −0
Original line number Diff line number Diff line
@@ -4206,6 +4206,7 @@ static int st_init_command(struct scsi_cmnd *SCpnt)
		return 0;

	memcpy(SCpnt->cmnd, rq->cmd, sizeof(SCpnt->cmnd));
	SCpnt->cmd_len = rq->cmd_len;

	if (rq_data_dir(rq) == WRITE)
		SCpnt->sc_data_direction = DMA_TO_DEVICE;