ata_id: Fixed getting Response Code from SCSI Sense Data (#24921)
authorAleksey Vasenev <margtu-fivt@ya.ru>
Wed, 5 Oct 2022 19:33:53 +0000 (22:33 +0300)
committerLuca Boccassi <bluca@debian.org>
Thu, 22 Dec 2022 11:55:42 +0000 (11:55 +0000)
The Response Code is contained in the first byte of the SCSI Sense Data.
Bit number 7 is reserved or has a different meaning for some Response Codes
and is set to 1 for some drives.

(cherry picked from commit 2be1ae54badf7a3a12908a8094ebaba8f91887ca)

Gbp-Pq: Name ata_id-Fixed-getting-Response-Code-from-SCSI-Sense-Data-2.patch

src/udev/ata_id/ata_id.c

index ce0bf5d24bea145ab4978fd00c07c4932d246c62..c86e40be483a5bc43065be04aa7990310a45fd7c 100644 (file)
@@ -162,8 +162,8 @@ static int disk_identify_command(
                         return ret;
         }
 
-        if (!(sense[0] == 0x72 && desc[0] == 0x9 && desc[1] == 0x0c) &&
-                !(sense[0] == 0x70 && sense[12] == 0x00 && sense[13] == 0x1d)) {
+        if (!((sense[0] & 0x7f) == 0x72 && desc[0] == 0x9 && desc[1] == 0x0c) &&
+                !((sense[0] & 0x7f) == 0x70 && sense[12] == 0x00 && sense[13] == 0x1d)) {
                 errno = EIO;
                 return -1;
         }
@@ -240,7 +240,7 @@ static int disk_identify_packet_device_command(
                         return ret;
         }
 
-        if (!(sense[0] == 0x72 && desc[0] == 0x9 && desc[1] == 0x0c)) {
+        if (!((sense[0] & 0x7f) == 0x72 && desc[0] == 0x9 && desc[1] == 0x0c)) {
                 errno = EIO;
                 return -1;
         }