• Frank Li's avatar
    net: fec: fix spin_lock dead lock · 85bd1798
    Frank Li authored
    =========================================================
    [ INFO: possible irq lock inversion dependency detected ]
    3.8.0-rc5+ #82 Not tainted
    ---------------------------------------------------------
    swapper/0/0 just changed the state of lock:
     (&(&fep->hw_lock)->rlock){..-...}, at: [<8034e2f8>] fec_enet_start_xmit+0x48/0x                      2cc
    but this lock took another, SOFTIRQ-unsafe lock in the past:
    (prepare_lock){+.+.+.}
    
    and interrupts could create inverse lock ordering between them.
    other info that might help us debug this:
    Possible interrupt unsafe locking scenario:
    
    CPU0				CPU1
    ----				----
    lock(prepare_lock);
    				local_irq_disable()
    				lock(&(&fep->hw_lock)->rlock);
    				lock(prepare_lock);
    <Interrupt>
    lock(&(&fep->hw_lock)->rlock);
    
    *** DEADLOCK ***
    Signed-off-by: default avatarFrank Li <Frank.Li@freescale.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    85bd1798
fec_ptp.c 9.94 KB