Re: 2.6.27-rc4: lots of 'in_atomic():1, irqs_disabled():0' with software-raid1

From: Jens Axboe
Date: Fri Aug 29 2008 - 03:48:01 EST


On Fri, Aug 29 2008, Neil Brown wrote:
> On Thursday August 28, akpm@xxxxxxxxxxxxxxxxxxxx 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@xxxxxxx>
> 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,

That has been fixed in the tree for over a week, I think you need to
update :-)

--
Jens Axboe

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/