mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 17:24:17 +08:00
storvsc: be more picky about scmnd->sc_data_direction
Under the 'default' case in scmnd->sc_data_direction we have 3 options: - DMA_NONE which we handle correctly. - DMA_BIDIRECTIONAL which is never supposed to be set by SCSI stack. - Garbage value. Do WARN() and return -EINVAL in the last two cases. virtio_scsi does BUG_ON() here but it looks like an overkill. Reported-by: Radim Krčmář <rkrcmar@redhat.com> Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com> Acked-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: James Bottomley <JBottomley@Odin.com>
This commit is contained in:
parent
10978e48cc
commit
cb1cf0804f
@ -1598,10 +1598,18 @@ static int storvsc_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *scmnd)
|
||||
vm_srb->data_in = READ_TYPE;
|
||||
vm_srb->win8_extension.srb_flags |= SRB_FLAGS_DATA_IN;
|
||||
break;
|
||||
default:
|
||||
case DMA_NONE:
|
||||
vm_srb->data_in = UNKNOWN_TYPE;
|
||||
vm_srb->win8_extension.srb_flags |= SRB_FLAGS_NO_DATA_TRANSFER;
|
||||
break;
|
||||
default:
|
||||
/*
|
||||
* This is DMA_BIDIRECTIONAL or something else we are never
|
||||
* supposed to see here.
|
||||
*/
|
||||
WARN(1, "Unexpected data direction: %d\n",
|
||||
scmnd->sc_data_direction);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user