Re: [PATCH v4] uart: fix race between uart_put_char() and uart_shutdown()
From: Tycho Andersen <hidden>
Date: 2018-07-12 18:30:14
Also in:
lkml
On Thu, Jul 12, 2018 at 08:25:45PM +0200, Greg Kroah-Hartman wrote:
On Thu, Jul 12, 2018 at 12:18:46PM -0600, Tycho Andersen wrote:quoted
On Thu, Jul 12, 2018 at 05:40:15PM +0200, Greg Kroah-Hartman wrote:quoted
On Thu, Jul 12, 2018 at 09:08:22AM -0600, Tycho Andersen wrote:quoted
On Thu, Jul 12, 2018 at 05:04:38PM +0200, Greg Kroah-Hartman wrote:quoted
On Wed, Jul 11, 2018 at 10:07:44AM -0600, Tycho Andersen wrote:quoted
+ if (uport) + spin_lock_irqsave(&uport->lock, flags);That's the same thing as just calling uart_port_lock(), why aren't you doing that?Because the compiler can't seem to "see" through the macros/ref calls, and I get the warning I mentioned here if I use them: https://lkml.org/lkml/2018/7/6/840What horrible version of gcc are you using that give you that? Don't open-code things just because of a broken compiler.I've tried with both 7.3.0 and 5.4.0. I think the reason we see this here but not elsewhere in the file is because there's an actual function call (free_page()) in the critical section. If we move that out, something like the below patch, it all works for me.Ick. Which version of this series had the problem? Let me test it out here...
v3, if you remove the initialization of flags from both functions you should see it. Tycho