Message ID | 20190123224217.198935-1-bvanassche@acm.org (mailing list archive) |
---|---|
State | Rejected |
Headers | show |
Series | Fix sense handling in __scsi_execute() | expand |
On Wed, 2019-01-23 at 14:42 -0800, Bart Van Assche wrote: > Since blk_execute_rq() no longer allocates a sense buffer and no longer > initializes the sense pointer the callers of blk_execute_rq() have to do > initialize the sense pointer. Hence this patch that initializes rq->sense > and that removes a superfluous memcpy() statement. > > Cc: Christoph Hellwig <hch@lst.de> > Cc: Douglas Gilbert <dgilbert@interlog.com> > Cc: <stable@vger.kernel.org> # v4.11+ > Fixes: 82ed4db499b8 ("block: split scsi_request out of struct request") > Signed-off-by: Bart Van Assche <bvanassche@acm.org> > --- > drivers/scsi/scsi_lib.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 4feba3b5aff1..8b9f4b1bca35 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -271,6 +271,7 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, > rq->cmd_len = COMMAND_SIZE(cmd[0]); > memcpy(rq->cmd, cmd, rq->cmd_len); > rq->retries = retries; > + rq->sense = sense; > req->timeout = timeout; > req->cmd_flags |= flags; > req->rq_flags |= rq_flags | RQF_QUIET; > @@ -291,8 +292,6 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, > > if (resid) > *resid = rq->resid_len; > - if (sense && rq->sense_len) > - memcpy(sense, rq->sense, SCSI_SENSE_BUFFERSIZE); > if (sshdr) > scsi_normalize_sense(rq->sense, rq->sense_len, sshdr); > ret = rq->result; Please ignore this patch - I just realized that this is not the right way to fix the issue I ran into. Bart.
diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c index 4feba3b5aff1..8b9f4b1bca35 100644 --- a/drivers/scsi/scsi_lib.c +++ b/drivers/scsi/scsi_lib.c @@ -271,6 +271,7 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, rq->cmd_len = COMMAND_SIZE(cmd[0]); memcpy(rq->cmd, cmd, rq->cmd_len); rq->retries = retries; + rq->sense = sense; req->timeout = timeout; req->cmd_flags |= flags; req->rq_flags |= rq_flags | RQF_QUIET; @@ -291,8 +292,6 @@ int __scsi_execute(struct scsi_device *sdev, const unsigned char *cmd, if (resid) *resid = rq->resid_len; - if (sense && rq->sense_len) - memcpy(sense, rq->sense, SCSI_SENSE_BUFFERSIZE); if (sshdr) scsi_normalize_sense(rq->sense, rq->sense_len, sshdr); ret = rq->result;
Since blk_execute_rq() no longer allocates a sense buffer and no longer initializes the sense pointer the callers of blk_execute_rq() have to do initialize the sense pointer. Hence this patch that initializes rq->sense and that removes a superfluous memcpy() statement. Cc: Christoph Hellwig <hch@lst.de> Cc: Douglas Gilbert <dgilbert@interlog.com> Cc: <stable@vger.kernel.org> # v4.11+ Fixes: 82ed4db499b8 ("block: split scsi_request out of struct request") Signed-off-by: Bart Van Assche <bvanassche@acm.org> --- drivers/scsi/scsi_lib.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-)