The patch titled Pass a lock expression to __cond_lock, like __acquire and __release has been removed from the -mm tree. Its filename is pass-a-lock-expression-to-__cond_lock-like-__acquire-and.patch This patch was dropped because it was merged into mainline or a subsystem tree ------------------------------------------------------ Subject: Pass a lock expression to __cond_lock, like __acquire and __release From: Josh Triplett <josht@xxxxxxxxxx> Currently, __acquire and __release take a lock expression, but __cond_lock takes only a condition, not the lock acquired if the expression evaluates to true. Change __cond_lock to accept a lock expression, and change all the callers to pass in a lock expression. Signed-off-by: Josh Triplett <josh@xxxxxxxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxx> --- include/linux/compiler.h | 4 ++-- include/linux/spinlock.h | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff -puN include/linux/compiler.h~pass-a-lock-expression-to-__cond_lock-like-__acquire-and include/linux/compiler.h --- a/include/linux/compiler.h~pass-a-lock-expression-to-__cond_lock-like-__acquire-and +++ a/include/linux/compiler.h @@ -14,7 +14,7 @@ # define __releases(x) __attribute__((context(1,0))) # define __acquire(x) __context__(1) # define __release(x) __context__(-1) -# define __cond_lock(x) ((x) ? ({ __context__(1); 1; }) : 0) +# define __cond_lock(x,c) ((c) ? ({ __acquire(x); 1; }) : 0) extern void __chk_user_ptr(void __user *); extern void __chk_io_ptr(void __iomem *); #else @@ -31,7 +31,7 @@ extern void __chk_io_ptr(void __iomem *) # define __releases(x) # define __acquire(x) (void)0 # define __release(x) (void)0 -# define __cond_lock(x) (x) +# define __cond_lock(x,c) (c) #endif #ifdef __KERNEL__ diff -puN include/linux/spinlock.h~pass-a-lock-expression-to-__cond_lock-like-__acquire-and include/linux/spinlock.h --- a/include/linux/spinlock.h~pass-a-lock-expression-to-__cond_lock-like-__acquire-and +++ a/include/linux/spinlock.h @@ -167,9 +167,9 @@ do { \ * regardless of whether CONFIG_SMP or CONFIG_PREEMPT are set. The various * methods are defined as nops in the case they are not required. */ -#define spin_trylock(lock) __cond_lock(_spin_trylock(lock)) -#define read_trylock(lock) __cond_lock(_read_trylock(lock)) -#define write_trylock(lock) __cond_lock(_write_trylock(lock)) +#define spin_trylock(lock) __cond_lock(lock, _spin_trylock(lock)) +#define read_trylock(lock) __cond_lock(lock, _read_trylock(lock)) +#define write_trylock(lock) __cond_lock(lock, _write_trylock(lock)) #define spin_lock(lock) _spin_lock(lock) @@ -236,7 +236,7 @@ do { \ _write_unlock_irqrestore(lock, flags) #define write_unlock_bh(lock) _write_unlock_bh(lock) -#define spin_trylock_bh(lock) __cond_lock(_spin_trylock_bh(lock)) +#define spin_trylock_bh(lock) __cond_lock(lock, _spin_trylock_bh(lock)) #define spin_trylock_irq(lock) \ ({ \ @@ -264,7 +264,7 @@ do { \ */ extern int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); #define atomic_dec_and_lock(atomic, lock) \ - __cond_lock(_atomic_dec_and_lock(atomic, lock)) + __cond_lock(lock, _atomic_dec_and_lock(atomic, lock)) /** * spin_can_lock - would spin_trylock() succeed? _ Patches currently in -mm which might be from josht@xxxxxxxxxx are origin.patch pass-sparse-the-lock-expression-given-to-lock-annotations.patch nfsd-add-lock-annotations-to-e_start-and-e_stop.patch srcu-3-rcu-variant-permitting-read-side-blocking-srcu-add-lock-annotations.patch rcu-add-module_author-to-rcutorture-module.patch rcu-fix-incorrect-description-of-default-for-rcutorture.patch rcu-mention-rcu_bh-in-description-of-rcutortures.patch rcu-avoid-kthread_stop-on-invalid-pointer-if-rcutorture.patch rcu-fix-sign-bug-making-rcu_random-always-return-the-same.patch rcu-add-fake-writers-to-rcutorture.patch rcu-add-fake-writers-to-rcutorture-tidy.patch rcu-refactor-srcu_torture_deferred_free-to-work-for.patch rcu-add-rcu_sync-torture-type-to-rcutorture.patch rcu-add-rcu_bh_sync-torture-type-to-rcutorture.patch rcu-add-sched-torture-type-to-rcutorture.patch rcu-credits-and-maintainers.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html