From: Ye Li Date: Sun, 3 May 2020 14:27:01 +0000 (+0800) Subject: sata: ahsata: Fix wrong operand for checking SERR DIAG_X X-Git-Url: http://git.dujemihanovic.xyz/html/index.html?a=commitdiff_plain;h=87e2cb530fc147676319b7c639e7ce138ddf385e;p=u-boot.git sata: ahsata: Fix wrong operand for checking SERR DIAG_X Fix coverity issue CID 3261683: Wrong operator used (CONSTANT_EXPRESSION_RESULT) operator_confusion: ({...; __v;}) | 67108864 is always 1/true regardless of the values of its operand. This occurs as the logical operand of ! When DIAG_X is set, the PHY COMINIT signal is detected, so should use '&' to check whether it is set. Signed-off-by: Ye Li Signed-off-by: Peng Fan Reviewed-by: Simon Glass --- diff --git a/drivers/ata/dwc_ahsata.c b/drivers/ata/dwc_ahsata.c index a775214792..4b37a02338 100644 --- a/drivers/ata/dwc_ahsata.c +++ b/drivers/ata/dwc_ahsata.c @@ -223,7 +223,7 @@ static int ahci_host_init(struct ahci_uc_priv *uc_priv) /* Wait for COMINIT bit 26 (DIAG_X) in SERR */ timeout = 1000; - while (!(readl(&port_mmio->serr) | SATA_PORT_SERR_DIAG_X) + while (!(readl(&port_mmio->serr) & SATA_PORT_SERR_DIAG_X) && --timeout) ; if (timeout <= 0) {