diff options
author | tangwenji <tang.wenji@zte.com.cn> | 2017-08-17 19:51:54 +0800 |
---|---|---|
committer | Nicholas Bellinger <nab@linux-iscsi.org> | 2017-11-04 14:45:21 -0700 |
commit | c58a252beb04cf0e02d6a746b2ed7ea89b6deb71 (patch) | |
tree | 785099e62f55e4ff5e580b2109377ec3d9858daa /drivers/target/target_core_pr.c | |
parent | 88fb2fa7db7510bf1078226ab48d162d9854f3d4 (diff) | |
download | linux-stable-c58a252beb04cf0e02d6a746b2ed7ea89b6deb71.tar.gz linux-stable-c58a252beb04cf0e02d6a746b2ed7ea89b6deb71.tar.bz2 linux-stable-c58a252beb04cf0e02d6a746b2ed7ea89b6deb71.zip |
target: fix buffer offset in core_scsi3_pri_read_full_status
When at least two initiators register pr on the same LUN,
the target returns the exception data due to buffer offset
error, therefore the initiator executes command 'sg_persist -s'
may cause the initiator to appear segfault error.
This fixes a regression originally introduced by:
commit a85d667e58bddf73be84d1981b41eaac985ed216
Author: Bart Van Assche <bart.vanassche@sandisk.com>
Date: Tue May 23 16:48:27 2017 -0700
target: Use {get,put}_unaligned_be*() instead of open coding these functions
Signed-off-by: tangwenji <tang.wenji@zte.com.cn>
Cc: stable@vger.kernel.org # 4.13+
Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
Diffstat (limited to 'drivers/target/target_core_pr.c')
-rw-r--r-- | drivers/target/target_core_pr.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/target/target_core_pr.c b/drivers/target/target_core_pr.c index dd2cd8048582..9f25c9c6f67d 100644 --- a/drivers/target/target_core_pr.c +++ b/drivers/target/target_core_pr.c @@ -4011,6 +4011,7 @@ core_scsi3_pri_read_full_status(struct se_cmd *cmd) * Set the ADDITIONAL DESCRIPTOR LENGTH */ put_unaligned_be32(desc_len, &buf[off]); + off += 4; /* * Size of full desctipor header minus TransportID * containing $FABRIC_MOD specific) initiator device/port |