aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/dsa/sja1105/sja1105_spi.c
diff options
context:
space:
mode:
authorColin Ian King <colin.king@canonical.com>2019-05-08 14:30:41 +0100
committerDavid S. Miller <davem@davemloft.net>2019-05-08 13:13:25 -0700
commit5425711b6dd0f7283202729863d9210e7a1c7cd2 (patch)
treef13ab349b614a4930789b83cd23ec03e0f0f13d1 /drivers/net/dsa/sja1105/sja1105_spi.c
parentnet: dsa: sja1105: Make 'sja1105et_regs' and 'sja1105pqrs_regs' static (diff)
downloadlinux-dev-5425711b6dd0f7283202729863d9210e7a1c7cd2.tar.xz
linux-dev-5425711b6dd0f7283202729863d9210e7a1c7cd2.zip
net: dsa: sja1105: fix check on while loop exit
The while-loop exit condition check is not correct; the loop should continue if the returns from the function calls are negative or the CRC status returns are invalid. Currently it is ignoring the returns from the function calls. Fix this by removing the status return checks and only break from the loop at the very end when we know that all the success condtions have been met. Kudos to Dan Carpenter for describing the correct fix and Vladimir Oltean for noting the change to the check on the number of retries. Addresses-Coverity: ("Uninitialized scalar variable") Fixes: 8aa9ebccae87 ("net: dsa: Introduce driver for NXP SJA1105 5-port L2 switch") Signed-off-by: Colin Ian King <colin.king@canonical.com> Tested-by: Vladimir Oltean <olteanv@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/dsa/sja1105/sja1105_spi.c')
-rw-r--r--drivers/net/dsa/sja1105/sja1105_spi.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/net/dsa/sja1105/sja1105_spi.c b/drivers/net/dsa/sja1105/sja1105_spi.c
index 6848d82e423a..2eb70b8acfc3 100644
--- a/drivers/net/dsa/sja1105/sja1105_spi.c
+++ b/drivers/net/dsa/sja1105/sja1105_spi.c
@@ -466,14 +466,15 @@ int sja1105_static_config_upload(struct sja1105_private *priv)
"invalid, retrying...\n");
continue;
}
- } while (--retries && (status.crcchkl == 1 || status.crcchkg == 1 ||
- status.configs == 0 || status.ids == 1));
+ /* Success! */
+ break;
+ } while (--retries);
if (!retries) {
rc = -EIO;
dev_err(dev, "Failed to upload config to device, giving up\n");
goto out;
- } else if (retries != RETRIES - 1) {
+ } else if (retries != RETRIES) {
dev_info(dev, "Succeeded after %d tried\n", RETRIES - retries);
}