lkml.org 
[lkml]   [2011]   [Nov]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: tty related lockdep trace during bootup on 3.2-rc2
    From
    On Wed, Nov 23, 2011 at 3:28 PM, Havard Skinnemoen
    <hskinnemoen@google.com> wrote:
    > On Tue, Nov 22, 2011 at 7:38 PM, Dave Jones <davej@redhat.com> wrote:
    >> From Linus' current tree...
    >>
    >> related to 5dc2470c602da8851907ec18942cd876c3b4ecc1 maybe ?
    >
    > Yes, probably. I did have a bad feeling about the locking, but it
    > seemed to behave well during testing. Wonder why I didn't see this.
    >
    > So what's happening is that tty_open() holds big_tty_mutex while
    > calling acm_tty_open which takes open_lock, and acm_tty_close holds
    > open_lock while calling tty_port_close_start which takes
    > big_tty_mutex?

    Yes, exactly.

    >
    > Not sure how to solve this. Not taking the lock before calling
    > tty_port_close_start means the tty_port may get freed before it
    > returns.

    But...

    static void acm_tty_hangup(struct tty_struct *tty)
    {
    struct acm *acm = tty->driver_data;
    tty_port_hangup(&acm->port); //<---------------- No open_mutex
    protected neither...
    mutex_lock(&open_mutex);
    acm_port_down(acm);
    mutex_unlock(&open_mutex);
    }

    \
     
     \ /
      Last update: 2011-11-23 08:43    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean