FAILED: patch "[PATCH] scsi: target: iscsi: Fix data digest calculation" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 5528d03183fe5243416c706f64b1faa518b05130 Mon Sep 17 00:00:00 2001
From: Varun Prakash <[email protected]>
Date: Tue, 25 Aug 2020 18:05:10 +0530
Subject: [PATCH] scsi: target: iscsi: Fix data digest calculation
Current code does not consider 'page_off' in data digest calculation. To fix this, add a local variable 'first_sg' and set first_sg.offset to sg->offset + page_off.
Fixes e48354ce078c ("iscsi-target: Add iSCSI fabric support for target v4.1")
Cc <[email protected]>
Reviewed-by Mike Christie <[email protected]>
Signed-off-by Varun Prakash <[email protected]>
Signed-off-by Martin K. Petersen <[email protected]>
drivers/target/iscsi/iscsi_target.c +15 -2
@@ -1389,14 +1389,27 @@ static u32 iscsit_do_crypto_hash_sg( sg = cmd->first_data_sg; page_off = cmd->first_data_sg_off; +if (data_length && page_off) { +struct scatterlist first_sg; +u32 len =min_t (u32, data_length, sg->length - page_off); + +sg_init_table (&first_sg,1 ); +sg_set_page (&first_sg,sg_page (sg), len, sg->offset + page_off); + +ahash_request_set_crypt (hash, &first_sg,NULL , len); +crypto_ahash_update (hash); + + data_length -= len; + sg =sg_next (sg); + } +while (data_length) { -u32 cur_len =min_t (u32, data_length, (sg->length - page_off)); +u32 cur_len =min_t (u32, data_length, sg->length);ahash_request_set_crypt (hash, sg,NULL , cur_len);crypto_ahash_update (hash); data_length -= cur_len; - page_off =0 ;/* iscsit_map_iovec has already checked for invalid sg pointers */ sg =sg_next (sg); }