Hello community, here is the log from the commit of package libatasmart for openSUSE:Factory checked in at 2017-09-29 11:54:13 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libatasmart (Old) and /work/SRC/openSUSE:Factory/.libatasmart.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "libatasmart" Fri Sep 29 11:54:13 2017 rev:22 rq:529156 version:0.19 Changes: -------- --- /work/SRC/openSUSE:Factory/libatasmart/libatasmart.changes 2016-05-05 13:18:02.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libatasmart.new/libatasmart.changes 2017-09-29 11:54:14.576476648 +0200 @@ -1,0 +2,6 @@ +Wed Sep 13 18:45:50 UTC 2017 - zaitor@opensuse.org + +- Add libatasmart-0.19-wd-fix.patch: Fix issue with WD drives. + Fixes fdo#61998. + +------------------------------------------------------------------- New: ---- libatasmart-0.19-wd-fix.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libatasmart.spec ++++++ --- /var/tmp/diff_new_pack.11EIZY/_old 2017-09-29 11:54:15.216386414 +0200 +++ /var/tmp/diff_new_pack.11EIZY/_new 2017-09-29 11:54:15.220385850 +0200 @@ -24,6 +24,7 @@ Group: System/Libraries Url: http://git.0pointer.net/libatasmart.git/ Source: http://0pointer.de/public/%{name}-%{version}.tar.xz +Patch0: libatasmart-0.19-wd-fix.patch BuildRequires: libudev-devel BuildRequires: pkgconfig @@ -75,6 +76,7 @@ %prep %setup -q +%patch0 -p1 %build %configure --disable-static ++++++ libatasmart-0.19-wd-fix.patch ++++++ 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;