Fix sparse annotation of spin unlock macros in one case
PATCH 1/1 Fix sparse annotation of spin unlock macros in one case
From: Pavel Roskin <[email protected]>
SMP systems without preemption and spinlock debugging enabled use unlock macros that don't tell sparse that the lock is being released. Add sparse annotations in this case.
Signed-off-by Pavel Roskin <[email protected]>
---
include/linux/spinlock.h | 33 ++++++++++++++++++++++++--------- 1 files changed, 24 insertions(+), 9 deletions(-)
include/linux/spinlock.h +24 -9
@@ -228,15 +228,30 @@ do { \# define read_unlock_irq (lock) _read_unlock_irq(lock)# define write_unlock_irq (lock) _write_unlock_irq(lock)#else -# define spin_unlock (lock) __raw_spin_unlock(&(lock)->raw_lock) -# define read_unlock (lock) __raw_read_unlock(&(lock)->raw_lock) -# define write_unlock (lock) __raw_write_unlock(&(lock)->raw_lock) -# define spin_unlock_irq (lock) \ - do { __raw_spin_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) -# define read_unlock_irq (lock) \ - do { __raw_read_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) -# define write_unlock_irq (lock) \ - do { __raw_write_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) +# define spin_unlock (lock) \ + do {__raw_spin_unlock(&(lock)->raw_lock); __release(lock); } while (0) +# define read_unlock (lock) \ + do {__raw_read_unlock(&(lock)->raw_lock); __release(lock); } while (0) +# define write_unlock (lock) \ + do {__raw_write_unlock(&(lock)->raw_lock); __release(lock); } while (0) +# define spin_unlock_irq (lock) \ +do { \ + __raw_spin_unlock(&(lock)->raw_lock); \ + local_irq_enable(); \ + __release(lock); \ +} while (0) +# define read_unlock_irq (lock) \ +do { \ + __raw_read_unlock(&(lock)->raw_lock); \ + local_irq_enable(); \ + __release(lock); \ +} while (0) +# define write_unlock_irq (lock) \ +do { \ + __raw_write_unlock(&(lock)->raw_lock); \ + local_irq_enable(); \ + __release(lock); \ +} while (0)#endif #define spin_unlock_irqrestore (lock, flags) \
Signature · 2 lines
Regards, Pavel Roskin