disk *
This commit is contained in:
@@ -0,0 +1,26 @@
|
||||
Author: Phillip Susi <psusi@ubuntu.com>
|
||||
Subject: fix an incorrect IO error reading SMART status
|
||||
Description: The read SMART status command's return status
|
||||
was testing for a success/failure value that included 8
|
||||
bits that are "N/A" according to the standard, and required
|
||||
that they be zeros. At least some drives do not fill them
|
||||
with zeros, so correct this by masking off the undefined
|
||||
bits.
|
||||
|
||||
Index: b/atasmart.c
|
||||
===================================================================
|
||||
--- a/atasmart.c
|
||||
+++ b/atasmart.c
|
||||
@@ -925,10 +925,10 @@
|
||||
/* SAT/USB bridges truncate packets, so we only check for 4F,
|
||||
* not for 2C on those */
|
||||
if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x00C2U)) &&
|
||||
- cmd[4] == htons(0x4F00U))
|
||||
+ (cmd[4] & htons(0xFF00U)) == htons(0x4F00U))
|
||||
*good = TRUE;
|
||||
else if ((d->type == SK_DISK_TYPE_ATA_PASSTHROUGH_12 || cmd[3] == htons(0x002CU)) &&
|
||||
- cmd[4] == htons(0xF400U))
|
||||
+ (cmd[4] & htons(0xFF00U)) == htons(0xF400U))
|
||||
*good = FALSE;
|
||||
else {
|
||||
errno = EIO;
|
||||
Reference in New Issue
Block a user