瀏覽代碼

[libata] sata_mv: errata check buglet fix

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>
Andres Salomon 19 年之前
父節點
當前提交
62f1d0e6de
共有 1 個文件被更改,包括 1 次插入2 次删除
  1. 1 2
      drivers/scsi/sata_mv.c

+ 1 - 2
drivers/scsi/sata_mv.c

@@ -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);