scsi: target: core: Add cmd length set before cmd complete
authorAleksandr Miloserdov <a.miloserdov@yadro.com>
Tue, 9 Feb 2021 07:22:01 +0000 (10:22 +0300)
committerMartin K. Petersen <martin.petersen@oracle.com>
Tue, 23 Feb 2021 03:21:29 +0000 (22:21 -0500)
commit1c73e0c5e54d5f7d77f422a10b03ebe61eaed5ad
tree5bd664dd5b431e3e94380a219201b4fee7b218b8
parentd39bfd0686fd2b21f857c61bb2753db3a932cb24
scsi: target: core: Add cmd length set before cmd complete

TCM doesn't properly handle underflow case for service actions. One way to
prevent it is to always complete command with
target_complete_cmd_with_length(), however it requires access to data_sg,
which is not always available.

This change introduces target_set_cmd_data_length() function which allows
to set command data length before completing it.

Link: https://lore.kernel.org/r/20210209072202.41154-2-a.miloserdov@yadro.com
Reviewed-by: Roman Bolshakov <r.bolshakov@yadro.com>
Reviewed-by: Bodo Stroesser <bostroesser@gmail.com>
Signed-off-by: Aleksandr Miloserdov <a.miloserdov@yadro.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/target_core_transport.c
include/target/target_core_backend.h