]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
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 63eb08c43c0517ff2e95a25c3d5ee4b326bfdcc0..6764c13530b9bda84ccd9cfeaac7f1e8c6294b86 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);