[libata] sata_mv: errata check buglet fix
authorAndres Salomon <dilinger@debian.org>
Mon, 11 Sep 2006 12:51:05 +0000 (08:51 -0400)
committerJeff Garzik <jeff@garzik.org>
Mon, 11 Sep 2006 12:51:05 +0000 (08:51 -0400)
Fix a buglet; the errata check below this code is assuming the value in
the sstatus variable is what was pulled out of the SCR_STATUS register.
However, the status checks in the timeout loop clobber everything
but the first 4 bits of sstatus, so the errata checks are invalid.

This patch changes it to not clobber SStatus.

Signed-off-by: Andres Salomon <dilinger@debian.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/scsi/sata_mv.c

index 1053c7c76b7db9fc3b3218b1173d217fda1198d4..fa38a413d16b4fa939c37b0c4cd39adcbba145c7 100644 (file)
@@ -1961,8 +1961,7 @@ comreset_retry:
        timeout = jiffies + msecs_to_jiffies(200);
        do {
                sata_scr_read(ap, SCR_STATUS, &sstatus);
-               sstatus &= 0x3;
-               if ((sstatus == 3) || (sstatus == 0))
+               if (((sstatus & 0x3) == 3) || ((sstatus & 0x3) == 0))
                        break;
 
                __msleep(1, can_sleep);