The "conn" pointer is NULL so this "goto drop;" will lead to a NULL dereference when we call mutex_unlock(&conn->lock). Free the skb and return directly instead. Fixes: dd6367916d2d ("Bluetooth: L2CAP: Fix corrupted list in hci_chan_del") Signed-off-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> --- net/bluetooth/l2cap_core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 6cdc1dc3a7f9..fec11e576f31 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -7456,8 +7456,10 @@ void l2cap_recv_acldata(struct hci_conn *hcon, struct sk_buff *skb, u16 flags) hci_dev_unlock(hcon->hdev); - if (!conn) - goto drop; + if (!conn) { + kfree_skb(skb); + return; + } BT_DBG("conn %p len %u flags 0x%x", conn, skb->len, flags); -- 2.47.2