summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorAndrew Goodbody <[email protected]>2025-08-12 12:34:38 +0100
committerTom Rini <[email protected]>2025-10-28 10:27:40 -0600
commit0ed45794ae9fa3bd8adb1f2d85875f93d94249f8 (patch)
tree6d7cae717e0ca32a893770cc679ec21a75b36dc8 /drivers
parent7807ed921314cd7af83fd88162d0b8c6fb20a9ca (diff)
spi: cadence_qspi: Off by 1 in test for timeout
In cadence_qspi_apb_exec_flash_cmd the test for a timeout uses a post-decrement on the variable retry which will result in a value of -1 after the loop exit, or it would if the variable were signed. To fix this make retry a signed variable and test its value for being equal to -1. This issue was found by Smatch. Signed-off-by: Andrew Goodbody <[email protected]>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/spi/cadence_qspi_apb.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/spi/cadence_qspi_apb.c b/drivers/spi/cadence_qspi_apb.c
index 4696c09f754..0d4bc685f5d 100644
--- a/drivers/spi/cadence_qspi_apb.c
+++ b/drivers/spi/cadence_qspi_apb.c
@@ -354,7 +354,7 @@ void cadence_qspi_apb_controller_init(struct cadence_spi_priv *priv)
int cadence_qspi_apb_exec_flash_cmd(void *reg_base, unsigned int reg)
{
- unsigned int retry = CQSPI_REG_RETRY;
+ int retry = CQSPI_REG_RETRY;
/* Write the CMDCTRL without start execution. */
writel(reg, reg_base + CQSPI_REG_CMDCTRL);
@@ -369,7 +369,7 @@ int cadence_qspi_apb_exec_flash_cmd(void *reg_base, unsigned int reg)
udelay(1);
}
- if (!retry) {
+ if (retry == -1) {
printf("QSPI: flash command execution timeout\n");
return -EIO;
}