net: encx24j600: Fix invalid logic in reading of MISTAT register
[ Upstream commit25f427ac7b] A loop for reading MISTAT register continues while regmap_read() fails and (mistat & BUSY), but if regmap_read() fails a value of mistat is undefined. The patch proposes to check for BUSY flag only when regmap_read() succeed. Compile test only. Found by Linux Verification Center (linuxtesting.org) with SVACE. Fixes:d70e53262f("net: Microchip encx24j600 driver") Signed-off-by: Valentina Goncharenko <goncharenko.vp@ispras.ru> Reviewed-by: Pavan Chebbi <pavan.chebbi@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
51ba1820e7
commit
3d3b30718a
1 changed files with 2 additions and 2 deletions
|
|
@ -359,7 +359,7 @@ static int regmap_encx24j600_phy_reg_read(void *context, unsigned int reg,
|
|||
goto err_out;
|
||||
|
||||
usleep_range(26, 100);
|
||||
while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) != 0) &&
|
||||
while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) &&
|
||||
(mistat & BUSY))
|
||||
cpu_relax();
|
||||
|
||||
|
|
@ -397,7 +397,7 @@ static int regmap_encx24j600_phy_reg_write(void *context, unsigned int reg,
|
|||
goto err_out;
|
||||
|
||||
usleep_range(26, 100);
|
||||
while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) != 0) &&
|
||||
while (((ret = regmap_read(ctx->regmap, MISTAT, &mistat)) == 0) &&
|
||||
(mistat & BUSY))
|
||||
cpu_relax();
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue