X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=net%2Fnfc%2Fllcp_core.c;h=1c4c048e0a1b622cec68c09332bc3f6354e910e8;hb=17f7ae16aef1f58bc4af4c7a16b8778a91a30255;hp=158bdbf668ccf91fb211f49107d6b770d2fe98e4;hpb=58e3dd1558f56e95e7077a63340bb33e7aa42946;p=deliverable%2Flinux.git diff --git a/net/nfc/llcp_core.c b/net/nfc/llcp_core.c index 158bdbf668cc..1c4c048e0a1b 100644 --- a/net/nfc/llcp_core.c +++ b/net/nfc/llcp_core.c @@ -730,6 +730,13 @@ static void nfc_llcp_tx_work(struct work_struct *work) DUMP_PREFIX_OFFSET, 16, 1, skb->data, skb->len, true); + if (ptype == LLCP_PDU_DISC && sk != NULL && + sk->sk_state == LLCP_DISCONNECTING) { + nfc_llcp_sock_unlink(&local->sockets, sk); + sock_orphan(sk); + sock_put(sk); + } + if (ptype == LLCP_PDU_I) copy_skb = skb_copy(skb, GFP_ATOMIC);