diff options
author | Christoph Hellwig <hch@lst.de> | 2018-11-10 11:30:44 +0300 |
---|---|---|
committer | Jens Axboe <axboe@kernel.dk> | 2018-11-10 18:03:44 +0300 |
commit | 511c49fe1804671800947b69281e07719fad25e2 (patch) | |
tree | 1caff1ffce2391e2abf3cccace4437dcd6dd69bc /drivers/scsi/fnic | |
parent | e41128cfd9389b889e91097b8ca61574d1e71482 (diff) | |
download | linux-511c49fe1804671800947b69281e07719fad25e2.tar.xz |
fnic: fix fnic_scsi_host_{start,end}_tag
The way these functions abuse ->special to try to store the dummy
request looks completely broken, given that it actually stores the
original scsi command.
Instead switch to ->host_scribble and store the actual dummy command.
Reviewed-by: Hannes Reinecke <hare@suse.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
Diffstat (limited to 'drivers/scsi/fnic')
-rw-r--r-- | drivers/scsi/fnic/fnic_scsi.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/scsi/fnic/fnic_scsi.c b/drivers/scsi/fnic/fnic_scsi.c index 96acfcecd540..cafbcfb85bfa 100644 --- a/drivers/scsi/fnic/fnic_scsi.c +++ b/drivers/scsi/fnic/fnic_scsi.c @@ -2274,7 +2274,7 @@ fnic_scsi_host_start_tag(struct fnic *fnic, struct scsi_cmnd *sc) return SCSI_NO_TAG; sc->tag = sc->request->tag = dummy->tag; - sc->request->special = sc; + sc->host_scribble = (unsigned char *)dummy; return dummy->tag; } @@ -2286,7 +2286,7 @@ fnic_scsi_host_start_tag(struct fnic *fnic, struct scsi_cmnd *sc) static inline void fnic_scsi_host_end_tag(struct fnic *fnic, struct scsi_cmnd *sc) { - struct request *dummy = sc->request->special; + struct request *dummy = (struct request *)sc->host_scribble; blk_mq_free_request(dummy); } |