• Jack Morgenstein's avatar
    net/mlx4_core: Fix lockdep warning in handling of mac/vlan tables · 03a79f31
    Jack Morgenstein authored
    In the mac and vlan register/unregister/replace functions, the driver locks
    the mac table mutex (or vlan table mutex) on both ports.
    
    We move to use mutex_lock_nested() to prevent warnings, such as the one below.
    
    [ 101.828445] =============================================
    [ 101.834820] [ INFO: possible recursive locking detected ]
    [ 101.841199] 4.5.0-rc2+  #49 Not tainted
    [ 101.850251] ---------------------------------------------
    [ 101.856621] modprobe/3054 is trying to acquire lock:
    [ 101.862514] (&table->mutex#2){+.+.+.}, at: [<ffffffffa079c10e>] __mlx4_register_mac+0x87e/0xa90 [mlx4_core]
    [ 101.874598]
    [ 101.874598] but task is already holding lock:
    [ 101.881703] (&table->mutex#2){+.+.+.}, at: [<ffffffffa079c0f0>] __mlx4_register_mac+0x860/0xa90 [mlx4_core]
    [ 101.893776]
    [ 101.893776] other info that might help us debug this:
    [ 101.901658] Possible unsafe locking scenario:
    [ 101.901658]
    [ 101.908859] CPU0
    [ 101.911923] ----
    [ 101.914985] lock(&table->mutex#2);
    [ 101.919595] lock(&table->mutex#2);
    [ 101.924199]
    [ 101.924199] * DEADLOCK *
    [ 101.924199]
    [ 101.931643] May be due to missing lock nesting notation
    
    Fixes: 5f61385d ('net/mlx4_core: Keep VLAN/MAC tables mirrored in multifunc HA mode')
    Signed-off-by: default avatarJack Morgenstein <jackm@dev.mellanox.co.il>
    Suggested-by: default avatarDoron Tsur <doront@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    03a79f31
port.c 55 KB