diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c index 22e9718085366057794848a7f7e4e1b69d4f5743..cdb0a9f6f9fd3e85c81005ca3d1262e16685eca2 100644 --- a/net/bluetooth/l2cap_core.c +++ b/net/bluetooth/l2cap_core.c @@ -5712,9 +5712,14 @@ static inline int l2cap_le_command_rej(struct l2cap_conn *conn, if (!chan) goto done; + chan = l2cap_chan_hold_unless_zero(chan); + if (!chan) + goto done; + l2cap_chan_lock(chan); l2cap_chan_del(chan, ECONNREFUSED); l2cap_chan_unlock(chan); + l2cap_chan_put(chan); done: mutex_unlock(&conn->chan_lock);