Avoid smp_processor_id() in premptible code in the netfilter lock debugging code. Signed-off-by: Andrew Morton --- include/linux/netfilter_ipv4/lockhelp.h | 16 +++++++++++----- 1 files changed, 11 insertions(+), 5 deletions(-) diff -puN include/linux/netfilter_ipv4/lockhelp.h~netfilter-debug-locking-fix include/linux/netfilter_ipv4/lockhelp.h --- 25/include/linux/netfilter_ipv4/lockhelp.h~netfilter-debug-locking-fix Thu Apr 28 20:53:26 2005 +++ 25-akpm/include/linux/netfilter_ipv4/lockhelp.h Thu Apr 28 20:53:26 2005 @@ -63,9 +63,11 @@ do { if ((l)->read_locked_map & (1UL << #define LOCK_BH(lk) \ do { \ + preempt_disable(); \ MUST_BE_UNLOCKED(lk); \ spin_lock_bh(&(lk)->l); \ atomic_set(&(lk)->locked_by, smp_processor_id()); \ + preempt_enable(); \ } while(0) #define UNLOCK_BH(lk) \ @@ -77,16 +79,20 @@ do { \ #define READ_LOCK(lk) \ do { \ + preempt_disable(); \ MUST_BE_READ_WRITE_UNLOCKED(lk); \ read_lock_bh(&(lk)->l); \ set_bit(smp_processor_id(), &(lk)->read_locked_map); \ + preempt_enable(); \ } while(0) -#define WRITE_LOCK(lk) \ -do { \ - MUST_BE_READ_WRITE_UNLOCKED(lk); \ - write_lock_bh(&(lk)->l); \ - set_bit(smp_processor_id(), &(lk)->write_locked_map); \ +#define WRITE_LOCK(lk) \ +do { \ + preempt_disable(); \ + MUST_BE_READ_WRITE_UNLOCKED(lk); \ + write_lock_bh(&(lk)->l); \ + set_bit(smp_processor_id(), &(lk)->write_locked_map); \ + preempt_enable(); \ } while(0) #define READ_UNLOCK(lk) \ _