scsi: target: Fix WRITE_SAME No Data Buffer crash
authorMike Christie <michael.christie@oracle.com>
Tue, 28 Jun 2022 02:23:25 +0000 (21:23 -0500)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 7 Jul 2022 20:38:14 +0000 (16:38 -0400)
commitccd3f449052449a917a3e577d8ba0368f43b8f29
tree92fcfb4b40910560ad306fb846e1733b0dacd4b7
parentfce54ed027577517df1e74b7d54dc2b1bd536887
scsi: target: Fix WRITE_SAME No Data Buffer crash

In newer version of the SBC specs, we have a NDOB bit that indicates there
is no data buffer that gets written out. If this bit is set using commands
like "sg_write_same --ndob" we will crash in target_core_iblock/file's
execute_write_same handlers when we go to access the se_cmd->t_data_sg
because its NULL.

This patch adds a check for the NDOB bit in the common WRITE SAME code
because we don't support it. And, it adds a check for zero SG elements in
each handler in case the initiator tries to send a normal WRITE SAME with
no data buffer.

Link: https://lore.kernel.org/r/20220628022325.14627-2-michael.christie@oracle.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_file.c
drivers/target/target_core_iblock.c
drivers/target/target_core_sbc.c