net: wwan: iosm: Properly check for valid exec stage in ipc_mmio_init()
authorMaciej S. Szmigiero <mail@maciej.szmigiero.name>
Sun, 29 Dec 2024 16:46:58 +0000 (17:46 +0100)
committerJakub Kicinski <kuba@kernel.org>
Fri, 3 Jan 2025 02:37:50 +0000 (18:37 -0800)
ipc_mmio_init() used the post-decrement operator in its loop continuing
condition of "retries" counter being "> 0", which meant that when this
condition caused loop exit "retries" counter reached -1.

But the later valid exec stage failure check only tests for "retries"
counter being exactly zero, so it didn't trigger in this case (but
would wrongly trigger if the code reaches a valid exec stage in the
very last loop iteration).

Fix this by using the pre-decrement operator instead, so the loop counter
is exactly zero on valid exec stage failure.

Fixes: dc0514f5d828 ("net: iosm: mmio scratchpad")
Signed-off-by: Maciej S. Szmigiero <mail@maciej.szmigiero.name>
Link: https://patch.msgid.link/8b19125a825f9dcdd81c667c1e5c48ba28d505a6.1735490770.git.mail@maciej.szmigiero.name
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/wwan/iosm/iosm_ipc_mmio.c

index 63eb08c..6764c13 100644 (file)
@@ -104,7 +104,7 @@ struct iosm_mmio *ipc_mmio_init(void __iomem *mmio, struct device *dev)
                        break;
 
                msleep(20);
-       } while (retries-- > 0);
+       } while (--retries > 0);
 
        if (!retries) {
                dev_err(ipc_mmio->dev, "invalid exec stage %X", stage);