Before scsi_prep_fn() calls the ULP .init_command() callback
function it stores the SCSI command pointer in request.special.
This means that the SCpnt = rq->special assignments in the sd
and sr drivers assign a pointer to itself. Hence convert these
two assignment statements into warning statements.

Signed-off-by: Bart Van Assche <bart.vanass...@sandisk.com>
Reviewed-by: Hannes Reinecke <h...@suse.com>
Reviewed-by: Johannes Thumshirn <jthumsh...@suse.de>
Cc: Christoph Hellwig <h...@lst.de>
---
 drivers/scsi/sd.c | 2 +-
 drivers/scsi/sr.c | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/scsi/sd.c b/drivers/scsi/sd.c
index bea36adeee17..a88639fbedb3 100644
--- a/drivers/scsi/sd.c
+++ b/drivers/scsi/sd.c
@@ -1013,7 +1013,7 @@ static int sd_setup_read_write_cmnd(struct scsi_cmnd 
*SCpnt)
        ret = scsi_init_io(SCpnt);
        if (ret != BLKPREP_OK)
                goto out;
-       SCpnt = rq->special;
+       WARN_ON_ONCE(SCpnt != rq->special);
 
        /* from here on until we're complete, any goto out
         * is used for a killable error condition */
diff --git a/drivers/scsi/sr.c b/drivers/scsi/sr.c
index a8f630213a1a..9be34d37c356 100644
--- a/drivers/scsi/sr.c
+++ b/drivers/scsi/sr.c
@@ -393,7 +393,7 @@ static int sr_init_command(struct scsi_cmnd *SCpnt)
        ret = scsi_init_io(SCpnt);
        if (ret != BLKPREP_OK)
                goto out;
-       SCpnt = rq->special;
+       WARN_ON_ONCE(SCpnt != rq->special);
        cd = scsi_cd(rq->rq_disk);
 
        /* from here on until we're complete, any goto out
-- 
2.14.0

Reply via email to