• Tony Camuso's avatar
    enic: fix lockdep around devcmd_lock · 8e091340
    Tony Camuso authored
    We were experiencing occasional "BUG: scheduling while atomic" splats
    in our testing. Enabling DEBUG_SPINLOCK and DEBUG_LOCKDEP in the kernel
    exposed a lockdep in the enic driver.
    
    enic 0000:0b:00.0 eth2: Link UP
    
    ======================================================
    [ INFO: SOFTIRQ-safe -> SOFTIRQ-unsafe lock order detected ]
    3.12.0-rc1.x86_64-dbg+ #2 Tainted: GF       W
    ------------------------------------------------------
    NetworkManager/4209 [HC0[0]:SC0[2]:HE1:SE0] is trying to acquire:
    (&(&enic->devcmd_lock)->rlock){+.+...}, at: [<ffffffffa026b7e4>] enic_dev_packet_filter+0x44/0x90 [enic]
    
    The fix was to replace spin_lock with spin_lock_bh for the enic
    devcmd_lock, so that soft irqs would be disabled while the lock
    is held.
    Signed-off-by: default avatarSujith Sankar <ssujith@cisco.com>
    Signed-off-by: default avatarTony Camuso <tcamuso@redhat.com>
    Signed-off-by: default avatarGovindarajulu Varadarajan <_govind@gmx.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8e091340
enic_main.c 62 KB