• Sebastian Andrzej Siewior's avatar
    net/libertas: don't recursive spin lock in if_spi_e2h() · 87e501b3
    Sebastian Andrzej Siewior authored
    |BUG: spinlock recursion on CPU#0, lbs_spi_thread/1030
    | lock: dee9a1bc, .magic: dead4ead, .owner: lbs_spi_thread/1030, .owner_cpu: 0
    |Call Trace:
    |[deec3eb0] [c0007220] show_stack+0x4c/0x15c (unreliable)
    |[deec3ef0] [c0187720] spin_bug+0x9c/0xb0
    |[deec3f10] [c0187890] _raw_spin_lock+0x54/0x148
    |[deec3f40] [c02d260c] _spin_lock_irqsave+0x2c/0x44
    |[deec3f60] [e8671800] lbs_queue_event+0x7c/0x130 [libertas]
    |[deec3f80] [e8725f04] lbs_spi_thread+0x538/0x58c [libertas_spi]
    |[deec3fe0] [c004f270] kthread+0x4c/0x88
    |[deec3ff0] [c000f33c] kernel_thread+0x4c/0x68
    
    if_spi_e2h() is grabbing ->driver_lock just while calling
    lbs_queue_event() which is grabbing the same lock.
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
    87e501b3
if_spi.c 30.8 KB