Messages in this thread Patch in this message | | | From | Neil Brown <> | Date | Fri, 29 Aug 2008 17:36:08 +1000 | Subject | Re: 2.6.27-rc4: lots of 'in_atomic():1, irqs_disabled():0' with software-raid1 |
| |
On Thursday August 28, akpm@linux-foundation.org wrote: > > I'm curious about how this happened. > > afaict from reading the code, this: > > rcu_read_lock(); > might_sleep(); > rcu_read_unlock(); > > will warn if CONFIG_PREEMPT_RCU=n but won't warn if > CONFIG_PREEMPT_RCU=y. If correct, that's a nasty trap. > > Is that what you did?
Uhm.. $ grep PREEMPT /home/src/md-x86-64/.config CONFIG_PREEMPT_NONE=y # CONFIG_PREEMPT_VOLUNTARY is not set # CONFIG_PREEMPT is not set $ grep DEBUG_SPIN /home/src/md-x86-64/.config CONFIG_DEBUG_SPINLOCK=y CONFIG_DEBUG_SPINLOCK_SLEEP=y $ grep RCU /home/src/md-x86-64/.config CONFIG_CLASSIC_RCU=y # CONFIG_RCU_TORTURE_TEST is not set
This definitely doesn't report an error if I put "might_sleep" inside rcu_read_lock. I tried to figure out why but got lost.
BTW, I need the following to get current -git to compile.
NeilBrown
Author: NeilBrown <neilb@suse.de> Date: Tue Aug 19 11:59:37 2008 +1000
Fix compile error in security
diff --git a/include/linux/security.h b/include/linux/security.h index 2ee5ecf..0cc23a1 100644 --- a/include/linux/security.h +++ b/include/linux/security.h @@ -1757,7 +1757,7 @@ static inline int security_ptrace_may_access(struct task_struct *child, static inline int security_ptrace_traceme(struct task_struct *child) { - return cap_ptrace_traceme(parent); + return cap_ptrace_traceme(child); } static inline int security_capget(struct task_struct *target,
| |