mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-09-16 07:35:14 +00:00
scsi: scsi_dh_rdac: zero cdb in send_mode_select()
commit57adf5d4cf
upstream. 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 commit3278255741
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:3278255741
("scsi_dh_rdac: switch to scsi_execute_req_flags()") Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/20190904155205.1666-1-martin.wilck@suse.com Signed-off-by: Martin Wilck <mwilck@suse.com> Acked-by: Ales Novak <alnovak@suse.cz> Reviewed-by: Shane Seymour <shane.seymour@hpe.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d1db4e5c35
commit
002bfb4bfc
1 changed files with 2 additions and 0 deletions
|
@ -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, "
|
||||
|
|
Loading…
Reference in a new issue