[PATCH] spin_unlock_bh() and preempt_check_resched()
authorSamuel Thibault <samuel.thibault@labri.fr>
Sat, 21 May 2005 15:50:15 +0000 (17:50 +0200)
committerLinus Torvalds <torvalds@ppc970.osdl.org>
Sat, 21 May 2005 17:46:48 +0000 (10:46 -0700)
commit10f02d1c59e55f529140dda3a92f0099d748451c
tree6b5a5804503401624171aff65b09ff022a9f0103
parent9636273dae265b9354b861b373cd43cd76a6d0fe
[PATCH] spin_unlock_bh() and preempt_check_resched()

In _spin_unlock_bh(lock):
do { \
_raw_spin_unlock(lock); \
preempt_enable(); \
local_bh_enable(); \
__release(lock); \
} while (0)

there is no reason for using preempt_enable() instead of a simple
preempt_enable_no_resched()

Since we know bottom halves are disabled, preempt_schedule() will always
return at once (preempt_count!=0), and hence preempt_check_resched() is
useless here...

This fixes it by using "preempt_enable_no_resched()" instead of the
"preempt_enable()", and thus avoids the useless preempt_check_resched()
just before re-enabling bottom halves.

Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
include/linux/spinlock.h
kernel/spinlock.c