]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
locking/rt: Remove one __cond_lock() in RT's spin_trylock_irqsave()
authorSebastian Andrzej Siewior <bigeasy@linutronix.de>
Mon, 12 Aug 2024 10:39:03 +0000 (12:39 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 24 Oct 2024 09:27:01 +0000 (11:27 +0200)
spin_trylock_irqsave() has a __cond_lock() wrapper which points to
__spin_trylock_irqsave(). The function then invokes spin_trylock() which
has another __cond_lock() finally pointing to rt_spin_trylock().

The compiler has no problem to parse this but sparse does not recognise
that users of spin_trylock_irqsave() acquire a conditional lock and
complains.

Remove one layer of __cond_lock() so that sparse recognises conditional
locking.

Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20240812104200.2239232-3-bigeasy@linutronix.de
include/linux/spinlock_rt.h

index babc3e0287791ef4b4ba04ff6a602b3a0bdaacaa..f9f14e135be7b3ceca15a106cf2a2762ca069418 100644 (file)
@@ -132,7 +132,7 @@ static __always_inline void spin_unlock_irqrestore(spinlock_t *lock,
 #define spin_trylock_irq(lock)                         \
        __cond_lock(lock, rt_spin_trylock(lock))
 
-#define __spin_trylock_irqsave(lock, flags)            \
+#define spin_trylock_irqsave(lock, flags)              \
 ({                                                     \
        int __locked;                                   \
                                                        \
@@ -142,9 +142,6 @@ static __always_inline void spin_unlock_irqrestore(spinlock_t *lock,
        __locked;                                       \
 })
 
-#define spin_trylock_irqsave(lock, flags)              \
-       __cond_lock(lock, __spin_trylock_irqsave(lock, flags))
-
 #define spin_is_contended(lock)                (((void)(lock), 0))
 
 static inline int spin_is_locked(spinlock_t *lock)