• Igor Pylypiv's avatar
    ata: libata-scsi: Fix offsets for the fixed format sense data · 38dab832
    Igor Pylypiv authored
    Correct the ATA PASS-THROUGH fixed format sense data offsets to conform
    to SPC-6 and SAT-5 specifications. Additionally, set the VALID bit to
    indicate that the INFORMATION field contains valid information.
    
    INFORMATION
    ===========
    
    SAT-5 Table 212 — "Fixed format sense data INFORMATION field for the ATA
    PASS-THROUGH commands" defines the following format:
    
    +------+------------+
    | Byte |   Field    |
    +------+------------+
    |    0 | ERROR      |
    |    1 | STATUS     |
    |    2 | DEVICE     |
    |    3 | COUNT(7:0) |
    +------+------------+
    
    SPC-6 Table 48 - "Fixed format sense data" specifies that the INFORMATION
    field starts at byte 3 in sense buffer resulting in the following offsets
    for the ATA PASS-THROUGH commands:
    
    +------------+-------------------------+
    |   Field    |  Offset in sense buffer |
    +------------+-------------------------+
    | ERROR      |  3                      |
    | STATUS     |  4                      |
    | DEVICE     |  5                      |
    | COUNT(7:0) |  6                      |
    +------------+-------------------------+
    
    COMMAND-SPECIFIC INFORMATION
    ============================
    
    SAT-5 Table 213 - "Fixed format sense data COMMAND-SPECIFIC INFORMATION
    field for ATA PASS-THROUGH" defines the following format:
    
    +------+-------------------+
    | Byte |        Field      |
    +------+-------------------+
    |    0 | FLAGS | LOG INDEX |
    |    1 | LBA (7:0)         |
    |    2 | LBA (15:8)        |
    |    3 | LBA (23:16)       |
    +------+-------------------+
    
    SPC-6 Table 48 - "Fixed format sense data" specifies that
    the COMMAND-SPECIFIC-INFORMATION field starts at byte 8
    in sense buffer resulting in the following offsets for
    the ATA PASS-THROUGH commands:
    
    Offsets of these fields in the fixed sense format are as follows:
    
    +-------------------+-------------------------+
    |       Field       |  Offset in sense buffer |
    +-------------------+-------------------------+
    | FLAGS | LOG INDEX |  8                      |
    | LBA (7:0)         |  9                      |
    | LBA (15:8)        |  10                     |
    | LBA (23:16)       |  11                     |
    +-------------------+-------------------------+
    Reported-by: default avatarAkshat Jain <akshatzen@google.com>
    Fixes: 11093cb1 ("libata-scsi: generate correct ATA pass-through sense")
    Cc: stable@vger.kernel.org
    Reviewed-by: default avatarHannes Reinecke <hare@suse.de>
    Reviewed-by: default avatarNiklas Cassel <cassel@kernel.org>
    Signed-off-by: default avatarIgor Pylypiv <ipylypiv@google.com>
    Link: https://lore.kernel.org/r/20240702024735.1152293-2-ipylypiv@google.comSigned-off-by: default avatarNiklas Cassel <cassel@kernel.org>
    38dab832
libata-scsi.c 118 KB