Reviewed-by: Shane Seymour <shane.seymour@xxxxxxx> > -----Original Message----- > From: linux-scsi-owner@xxxxxxxxxxxxxxx [mailto:linux-scsi- > owner@xxxxxxxxxxxxxxx] On Behalf Of Martin Wilck > Sent: Thursday, 5 September 2019 1:52 AM > To: Martin K. Petersen <martin.petersen@xxxxxxxxxx>; James Bottomley > <jejb@xxxxxxxxxxxxxxxxxx>; Hannes Reinecke <hare@xxxxxxx> > Cc: linux-scsi@xxxxxxxxxxxxxxx; Martin Wilck <Martin.Wilck@xxxxxxxx>; Ales > Novak <alnovak@xxxxxxx> > Subject: [PATCH] scsi: scsi_dh_rdac: zero cdb in send_mode_select() > > From: Ales Novak <alnovak@xxxxxxx> > > cdb in send_mode_select() is not zeroed and is only partially filled in > rdac_failover_get(), which leads to some random data getting to the > device. Users have reported storage responding to such commands with > INVALID FIELD IN CDB. Code before commit 327825574132 was not affected, > as it called blk_rq_set_block_pc(). > > Fix this by zeroing out the cdb first. > > Identified & fix proposed by HPE. > > Fixes: 327825574132 ("scsi_dh_rdac: switch to scsi_execute_req_flags()") > Acked-by: Ales Novak <alnovak@xxxxxxx> > Signed-off-by: Martin Wilck <mwilck@xxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx > --- > drivers/scsi/device_handler/scsi_dh_rdac.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c > b/drivers/scsi/device_handler/scsi_dh_rdac.c > index 65f1fe3..5efc959 100644 > --- a/drivers/scsi/device_handler/scsi_dh_rdac.c > +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c > @@ -546,6 +546,8 @@ static void send_mode_select(struct work_struct > *work) > spin_unlock(&ctlr->ms_lock); > > retry: > + memset(cdb, 0, sizeof(cdb)); > + > data_size = rdac_failover_get(ctlr, &list, cdb); > > RDAC_LOG(RDAC_LOG_FAILOVER, sdev, "array %s, ctlr %d, " > -- > 2.23.0