summaryrefslogtreecommitdiffstats
path: root/net/nfc
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2013-04-03 16:44:44 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2013-04-11 16:29:09 +0200
commit6d2cd978e5e14c47fa4f8ab3a136e38aceb4940d (patch)
tree32176eb65a43fe29efbcd94b835f53a9b8d1d30c /net/nfc
parentc470e319b48bf1aae6185f0c896e65c21c02bad3 (diff)
downloadlinux-stable-6d2cd978e5e14c47fa4f8ab3a136e38aceb4940d.tar.gz
linux-stable-6d2cd978e5e14c47fa4f8ab3a136e38aceb4940d.tar.bz2
linux-stable-6d2cd978e5e14c47fa4f8ab3a136e38aceb4940d.zip
NFC: llcp: Terminate connection when receiving a DISC on (0,0)
According to the LLCP specs, we must terminate the LLCP link when receiving a DISC with both ssap and dsap set to 0. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc')
-rw-r--r--net/nfc/llcp/llcp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/net/nfc/llcp/llcp.c b/net/nfc/llcp/llcp.c
index 3a161c87ef78..9e483c8e52f8 100644
--- a/net/nfc/llcp/llcp.c
+++ b/net/nfc/llcp/llcp.c
@@ -1106,6 +1106,12 @@ static void nfc_llcp_recv_disc(struct nfc_llcp_local *local,
dsap = nfc_llcp_dsap(skb);
ssap = nfc_llcp_ssap(skb);
+ if ((dsap == 0) && (ssap == 0)) {
+ pr_debug("Connection termination");
+ nfc_dep_link_down(local->dev);
+ return;
+ }
+
llcp_sock = nfc_llcp_sock_get(local, dsap, ssap);
if (llcp_sock == NULL) {
nfc_llcp_send_dm(local, dsap, ssap, LLCP_DM_NOCONN);