[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20191004104947.vbxe5kv3nbjxqs55@willie-the-truck>
Date: Fri, 4 Oct 2019 11:49:48 +0100
From: Will Deacon <will@...nel.org>
To: Russell King - ARM Linux admin <linux@...linux.org.uk>
Cc: Petr Mladek <pmladek@...e.com>, Kees Cook <keescook@...omium.org>,
Sergey Senozhatsky <sergey.senozhatsky@...il.com>,
Steven Rostedt <rostedt@...dmis.org>,
Feng Tang <feng.tang@...el.com>,
Andrew Morton <akpm@...ux-foundation.org>,
Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
linux-arm-kernel@...ts.infradead.org,
Ingo Molnar <mingo@...hat.com>, linux-kernel@...r.kernel.org,
stable@...r.kernel.org, contact@...ium.me
Subject: Re: [PATCH] panic: Ensure preemption is disabled during panic()
On Fri, Oct 04, 2019 at 10:29:17AM +0100, Russell King - ARM Linux admin wrote:
> On Fri, Oct 04, 2019 at 11:11:42AM +0200, Petr Mladek wrote:
> > On Thu 2019-10-03 21:56:34, Will Deacon wrote:
> > > I've deliberately left the irq part alone, since I think
> > > having magic sysrq work via the keyboard interrupt is desirable from the
> > > panic loop.
> >
> > I agree that we should keep sysrq working.
> >
> > One pity thing is that led_panic_blink() in
> > leds/drivers/trigger/ledtrig-panic.c uses workqueues:
> >
> > + led_panic_blink()
> > + led_trigger_event()
> > + led_set_brightness()
> > + schedule_work()
> >
> > It means that it depends on the scheduler. I guess that it
> > does not work in many panic situations. But this patch
> > will always block it.
> >
> > I agree that it is strange that userspace still works at
> > this stage. But does it cause any real problems?
>
> Yes, there are watchdog drivers that continue to pat their watchdog
> after the kernel has panic'd. It makes watchdogs useless (which is
> exactly how this problem was discovered.)
Indeed, and I think the LED blinking is already unreliable if the
brightness operation needs to sleep. For example, if the kernel isn't
preemptible or the work gets queued up on a different CPU which is
sitting in panic_smp_self_stop().
Will
Powered by blists - more mailing lists