Doing cond_resched() inside a spinlocked region might sleep, very rarely. It's worth a check. --- 25-akpm/include/linux/sched.h | 1 + 1 files changed, 1 insertion(+) diff -puN include/linux/sched.h~cond_resched-might-sleep include/linux/sched.h --- 25/include/linux/sched.h~cond_resched-might-sleep 2004-04-28 23:26:43.505015304 -0700 +++ 25-akpm/include/linux/sched.h 2004-04-28 23:26:43.509014696 -0700 @@ -1041,6 +1041,7 @@ static inline int need_resched(void) extern void __cond_resched(void); static inline void cond_resched(void) { + might_sleep(); if (need_resched()) __cond_resched(); } _