Commit 9b5cd7f3 authored by Roland Dreier's avatar Roland Dreier Committed by Nicholas Bellinger

target: Handle 0 correctly in transport_get_sectors_6()

SBC-3 says:

    A TRANSFER LENGTH field set to zero specifies that 256 logical
    blocks shall be written.  Any other value specifies the number
    of logical blocks that shall be written.

The old code was always just returning the value in the TRANSFER LENGTH
byte.  Fix this to return 256 if the byte is 0.
Signed-off-by: default avatarRoland Dreier <roland@purestorage.com>
Cc: stable@kernel.org
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 410f6702
...@@ -2144,10 +2144,15 @@ static inline u32 transport_get_sectors_6( ...@@ -2144,10 +2144,15 @@ static inline u32 transport_get_sectors_6(
/* /*
* Everything else assume TYPE_DISK Sector CDB location. * Everything else assume TYPE_DISK Sector CDB location.
* Use 8-bit sector value. * Use 8-bit sector value. SBC-3 says:
*
* A TRANSFER LENGTH field set to zero specifies that 256
* logical blocks shall be written. Any other value
* specifies the number of logical blocks that shall be
* written.
*/ */
type_disk: type_disk:
return (u32)cdb[4]; return cdb[4] ? : 256;
} }
static inline u32 transport_get_sectors_10( static inline u32 transport_get_sectors_10(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment