Commit c75fb88d authored by Pavel Roskin's avatar Pavel Roskin Committed by Linus Torvalds

[PATCH] Fix sparse annotation of spin unlock macros in one case

SMP systems without premption 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: default avatarPavel Roskin <proski@gnu.org>
Acked-by: default avatarIngo Molnar <mingo@elte.hu>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent aa0f0303
...@@ -228,15 +228,30 @@ do { \ ...@@ -228,15 +228,30 @@ do { \
# define read_unlock_irq(lock) _read_unlock_irq(lock) # define read_unlock_irq(lock) _read_unlock_irq(lock)
# define write_unlock_irq(lock) _write_unlock_irq(lock) # define write_unlock_irq(lock) _write_unlock_irq(lock)
#else #else
# define spin_unlock(lock) __raw_spin_unlock(&(lock)->raw_lock) # define spin_unlock(lock) \
# define read_unlock(lock) __raw_read_unlock(&(lock)->raw_lock) do {__raw_spin_unlock(&(lock)->raw_lock); __release(lock); } while (0)
# define write_unlock(lock) __raw_write_unlock(&(lock)->raw_lock) # define read_unlock(lock) \
# define spin_unlock_irq(lock) \ do {__raw_read_unlock(&(lock)->raw_lock); __release(lock); } while (0)
do { __raw_spin_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) # define write_unlock(lock) \
# define read_unlock_irq(lock) \ do {__raw_write_unlock(&(lock)->raw_lock); __release(lock); } while (0)
do { __raw_read_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) # define spin_unlock_irq(lock) \
# define write_unlock_irq(lock) \ do { \
do { __raw_write_unlock(&(lock)->raw_lock); local_irq_enable(); } while (0) __raw_spin_unlock(&(lock)->raw_lock); \
__release(lock); \
local_irq_enable(); \
} while (0)
# define read_unlock_irq(lock) \
do { \
__raw_read_unlock(&(lock)->raw_lock); \
__release(lock); \
local_irq_enable(); \
} while (0)
# define write_unlock_irq(lock) \
do { \
__raw_write_unlock(&(lock)->raw_lock); \
__release(lock); \
local_irq_enable(); \
} while (0)
#endif #endif
#define spin_unlock_irqrestore(lock, flags) \ #define spin_unlock_irqrestore(lock, flags) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment