From 78c1cebc95cc31dc8b06859522d26bc9eba9f558 Mon Sep 17 00:00:00 2001 From: "Gustavo F. Padovan" Date: Fri, 1 Apr 2011 15:13:36 -0300 Subject: [PATCH] --- yaml --- r: 246923 b: refs/heads/master c: 2ead70b8390d199ca04cd35311b51f5f3676079e h: refs/heads/master i: 246921: a603af47e5fefbd15c0146f04a12d3d663cd27fd 246919: 79da228dfea51febf048605b1c002bb8b3ca0989 v: v3 --- [refs] | 2 +- trunk/net/bluetooth/l2cap_core.c | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index eadaa628c9df..a5134fe34a3a 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 311bb895e325e5f4d708c1ed2206da8a3885c83a +refs/heads/master: 2ead70b8390d199ca04cd35311b51f5f3676079e diff --git a/trunk/net/bluetooth/l2cap_core.c b/trunk/net/bluetooth/l2cap_core.c index d3b5d6489a80..7264119b64a6 100644 --- a/trunk/net/bluetooth/l2cap_core.c +++ b/trunk/net/bluetooth/l2cap_core.c @@ -236,6 +236,10 @@ void l2cap_chan_del(struct l2cap_chan *chan, int err) } else sk->sk_state_change(sk); + if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE && + l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE)) + goto free; + skb_queue_purge(TX_QUEUE(sk)); if (l2cap_pi(sk)->mode == L2CAP_MODE_ERTM) { @@ -254,6 +258,7 @@ void l2cap_chan_del(struct l2cap_chan *chan, int err) } } +free: kfree(chan); }