Reviewed-by: Shane Seymour <shane.seym...@hpe.com>
> -----Original Message-----
> From: linux-scsi-ow...@vger.kernel.org [mailto:linux-scsi-
> ow...@vger.kernel.org] On Behalf Of Martin Wilck
> Sent: Thursday, 5 September 2019 1:52 AM
> To: Martin K. Petersen <martin.peter...@oracle.com>; James Bottomley
> <j...@linux.vnet.ibm.com>; Hannes Reinecke <h...@suse.de>
> Cc: linux-scsi@vger.kernel.org; Martin Wilck <martin.wi...@suse.com>; Ales
> Novak <alno...@suse.cz>
> Subject: [PATCH] scsi: scsi_dh_rdac: zero cdb in send_mode_select()
>
> From: Ales Novak <alno...@suse.cz>
>
> 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 <alno...@suse.cz>
> Signed-off-by: Martin Wilck <mwi...@suse.com>
> Cc: sta...@vger.kernel.org
> ---
> 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