[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <b016ad68-124a-5c98-f49b-f7286d995223@gmail.com>
Date: Tue, 2 Jun 2020 16:34:16 +0100
From: Dmitry Safonov <0x7f454c46@...il.com>
To: Andy Shevchenko <andy.shevchenko@...il.com>,
Johan Hovold <johan@...nel.org>
Cc: Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
Jiri Slaby <jslaby@...e.com>,
Andy Shevchenko <andriy.shevchenko@...ux.intel.com>,
"open list:SERIAL DRIVERS" <linux-serial@...r.kernel.org>,
Linux Kernel Mailing List <linux-kernel@...r.kernel.org>,
stable <stable@...r.kernel.org>
Subject: Re: [PATCH 2/4] serial: core: fix broken sysrq port unlock
On 6/2/20 3:48 PM, Andy Shevchenko wrote:
> On Tue, Jun 2, 2020 at 5:03 PM Johan Hovold <johan@...nel.org> wrote:
>>
>> Commit d6e1935819db ("serial: core: Allow processing sysrq at port
>> unlock time") worked around a circular locking dependency by adding
>> helpers used to defer sysrq processing to when the port lock was
>> released.
>>
>> A later commit unfortunately converted these inline helpers to exported
>> functions despite the fact that the unlock helper was restoring irq
>> flags, something which needs to be done in the same function that saved
>> them (e.g. on SPARC).
>
> I'm not familiar with sparc, can you elaborate a bit what is ABI /
> architecture lock implementation background?
I remember that was a limitation a while ago to save/restore flags from
the same function. Though, I vaguely remember the reason.
I don't see this limitation in Documentation/*
Google suggests that it's related to storage location:
https://stackoverflow.com/a/34279032
Which is definitely non-issue with tty drivers: they call
spin_lock_irqsave() with local flags and pass them to
uart_unlock_and_check_sysrq().
Looking into arch/sparc I also can't catch if it's still a limitation.
Also, looking around, xa_unlock_irqrestore() is called not from the same
function. Maybe this issue is in history?
Johan, is it a theoretical problem or something you observe?
Also, some comments would be nice near functions in the header.
Thanks,
Dmitry
Powered by blists - more mailing lists