Re: audit: rcu_read_lock() used illegally while idle

Andy Lutomirski
2014-12-03T20:39:00Z

On Wed, Dec 3, 2014 at 12:19 PM, Dave Jones <davej@redhat.com> wrote:
> On Wed, Dec 03, 2014 at 12:06:56PM -0800, Andy Lutomirski wrote:
>
> > >> Did something in RCU change recently ?
> > >
> > > Not since -rc1, as far as I know, anyway.
> >
> > I have patches to delete this whole fscking sysret fast but not really
> > fast path. I'll resend them for 3.19. In the mean time, can you test
> > this patch by itself:
> >
> > https://git.kernel.org/cgit/linux/kernel/git/luto/linux.git/commit/?h=x86/entry&id=1072a16a8d4ad1b11b8062f76e3236b9771b0fb6
>
> With that applied, I no longer see the trace.
>

Thanks.

The bug is that SCHEDULE_USER in sysret_schedule is wrong. I'd
suggest adding a warning to schedule_user that fires if context
tracking thinks we're already in the kernel.

FWIW, I think that the rest of the SCHEDULE_USER calls may be wrong,
too. In particular, the one in int_careful looks wrong as well, so I
don't see why my patch made a difference if I'm right.

Frédéric, any ideas here? As a stopgap measure, making SCHEDULE_USER
restore the previous state might make sense for 3.18.

--Andy

> thanks,
>
> Dave
>

--
Andy Lutomirski
AMA Capital Management, LLC