lkml.org 
[lkml]   [2011]   [Aug]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: patch "TTY: remove tty_locked" added to tty tree
    Date
    On Wednesday 24 August 2011, Jiri Slaby wrote:
    > On 08/24/2011 10:46 AM, Arnd Bergmann wrote:
    > > On Tuesday 23 August 2011 20:54:08 Jiri Slaby wrote:
    > >> On 08/23/2011 08:46 PM, Arnd Bergmann wrote:

    > > I think I just saw another problem: uart_close takes port->mutex while
    > > holding the BTM, then calls tty_wait_until_sent(). If this releases
    > > and reaquires the BTM, you get an AB-BA deadlock with port->mutex.
    >
    > Aargh, right. The question is why uart_close takes port->mutex there? It
    > may take it even right before uart_shutdown. As tty_wait_until_sent (or
    > uart_wait_until_sent) may be called e.g. from set_termios without that
    > lock anyway. There are ->tx_empty and ->stop_rx that may need some
    > protection. But those are register accessors, so they should be
    > protected by some spinlock to not race with interrupts. Actually stop_rx
    > is. And empty_rx is only in 8250.
    >
    > And I don't see anything else there which would need be protected by the
    > lock. Do you?

    I have not looked at correctness of port->lock before, I just tried to
    make sure that BTM correctly nests around it when I removed the BKL.

    It's not clear to me what state->mutex protects in the serial_core, but
    it has been around forever (used to be called state->sem) and is held in
    all uart functions, which is at least consistent. IIRC what Alan's plan
    for this was, uart_close should eventually get changed to use
    tty_port_close_start or even tty_port_close. Maybe the time for that has
    come now, lacking better alternatives?

    A lot of other drivers call tty_port_close_start() before taking port->mutex.

    Arnd


    \
     
     \ /
      Last update: 2011-08-24 13:23    [W:3.471 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site