]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
clk: renesas: cpg-mssr: Unlock before reset verification
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 5 Jan 2026 14:06:25 +0000 (14:06 +0000)
committerGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 9 Jan 2026 10:26:23 +0000 (11:26 +0100)
Move spin_unlock_irqrestore() before verifying the reset result and
printing errors. The verification condition only uses local variables
and does not require locking.

Reported-by: Pavel Machek <pavel@nabladev.com>
Closes: https://lore.kernel.org/all/aVujAQJSDn6WyORK@duo.ucw.cz/
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Geert Uytterhoeven <geert+renesas@glider.be>
Link: https://patch.msgid.link/20260105140625.2590685-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
drivers/clk/renesas/renesas-cpg-mssr.c

index 976c157829f17fa5ece1d2b3485ca2cb17f6ed8e..fad3d0cf84e4f2eaae2218647f0ee17430016342 100644 (file)
@@ -794,14 +794,14 @@ static int cpg_mrcr_set_reset_state(struct reset_controller_dev *rcdev,
 
        /* Verify the operation */
        val = readl(reg_addr);
+
+       spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
+
        if (set == !(bitmask & val)) {
                dev_err(priv->dev, "Reset register %u%02u operation failed\n", reg, bit);
-               spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
                return -EIO;
        }
 
-       spin_unlock_irqrestore(&priv->pub.rmw_lock, flags);
-
        return 0;
 }