• Szymon Janc's avatar
    Bluetooth: rfcomm: Fix sleep in invalid context in rfcomm_security_cfm · 88149db4
    Szymon Janc authored
    This was triggered by turning off encryption on ACL link when rfcomm
    was using high security. rfcomm_security_cfm (which is called from rx
    task) was closing DLC and this involves sending disconnect message
    (and locking socket).
    
    Move closing DLC to rfcomm_process_dlcs and only flag DLC for closure
    in rfcomm_security_cfm.
    
    BUG: sleeping function called from invalid context at net/core/sock.c:2032
    in_atomic(): 1, irqs_disabled(): 0, pid: 1788, name: kworker/0:3
    [<c0068a08>] (unwind_backtrace+0x0/0x108) from [<c05e25dc>] (dump_stack+0x20/0x24)
    [<c05e25dc>] (dump_stack+0x20/0x24) from [<c0087ba8>] (__might_sleep+0x110/0x12c)
    [<c0087ba8>] (__might_sleep+0x110/0x12c) from [<c04801d8>] (lock_sock_nested+0x2c/0x64)
    [<c04801d8>] (lock_sock_nested+0x2c/0x64) from [<c05670c8>] (l2cap_sock_sendmsg+0x58/0xcc)
    [<c05670c8>] (l2cap_sock_sendmsg+0x58/0xcc) from [<c047cf6c>] (sock_sendmsg+0xb0/0xd0)
    [<c047cf6c>] (sock_sendmsg+0xb0/0xd0) from [<c047cfc8>...
    88149db4
rfcomm.h 8.92 KB