• David Daney's avatar
    netdev/phy: Fixup lockdep warnings in mdio-mux.c · b93984c9
    David Daney authored
    With lockdep enabled we get:
    
    =============================================
    [ INFO: possible recursive locking detected ]
    3.4.4-Cavium-Octeon+ #313 Not tainted
    ---------------------------------------------
    kworker/u:1/36 is trying to acquire lock:
    (&bus->mdio_lock){+.+...}, at: [<ffffffff813da7e8>] mdio_mux_read+0x38/0xa0
    
    but task is already holding lock:
     (&bus->mdio_lock){+.+...}, at: [<ffffffff813d79e4>] mdiobus_read+0x44/0x88
    
    other info that might help us debug this:
     Possible unsafe locking scenario:
    
           CPU0
           ----
      lock(&bus->mdio_lock);
      lock(&bus->mdio_lock);
    
     *** DEADLOCK ***
    
     May be due to missing lock nesting notation
    .
    .
    .
    
    This is a false positive, since we are indeed using 'nested' locking,
    we need to use mutex_lock_nested().
    
    Now in theory we can stack multiple MDIO multiplexers, but that would
    require passing the nesting level (which is difficult to know) to
    mutex_lock_nested().  Instead we assume the simple case of a single
    level of nesting.  Since these are only warning messages, it isn't so
    important to solve the general case.
    Signed-off-by: default avatarDavid Daney <david.daney@cavium.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    b93984c9
mdio-mux.c 4.64 KB