From: Andrei Emeltchenko <redacted>
In L2CAP state_change lock sk only when we are dealing with
sockets. In A2MP we do not have sk so this will crash.
Signed-off-by: Andrei Emeltchenko <redacted>
---
net/bluetooth/l2cap_core.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/net/bluetooth/l2cap_core.c b/net/bluetooth/l2cap_core.c
index 5b9a667..6e801bb 100644
--- a/net/bluetooth/l2cap_core.c
+++ b/net/bluetooth/l2cap_core.c
@@ -212,9 +212,13 @@ static inline void l2cap_state_change(struct l2cap_chan *chan, int state, int er
{
struct sock *sk = chan->sk;
- lock_sock(sk);
+ if (sk)
+ lock_sock(sk);
+
__l2cap_state_change(chan, state, err);
- release_sock(sk);
+
+ if (sk)
+ release_sock(sk);
}
void __l2cap_chan_set_err(struct l2cap_chan *chan, int err)--
1.7.9.1