aboutsummaryrefslogtreecommitdiffstats
path: root/net/nfc/llcp
diff options
context:
space:
mode:
authorSamuel Ortiz <sameo@linux.intel.com>2012-10-16 15:15:59 -0400
committerSamuel Ortiz <sameo@linux.intel.com>2012-10-26 12:26:51 -0400
commita8df0f379213f190eff5f1cfe6b9f81475068d20 (patch)
treebcdc30efbb33e072e598987d63e09a7cd460a8c3 /net/nfc/llcp
parentb874dec21d1cb7a08fcbe4e442a789419dd1d51f (diff)
NFC: Return NULL when no LLCP socket for a dsap,ssap couple is found
The previous code was always returning the last socket from the LLCP socket list. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
Diffstat (limited to 'net/nfc/llcp')
-rw-r--r--net/nfc/llcp/llcp.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/net/nfc/llcp/llcp.c b/net/nfc/llcp/llcp.c
index a2da0a4f367d..285bba8c7afc 100644
--- a/net/nfc/llcp/llcp.c
+++ b/net/nfc/llcp/llcp.c
@@ -144,7 +144,7 @@ static struct nfc_llcp_sock *nfc_llcp_sock_get(struct nfc_llcp_local *local,
144{ 144{
145 struct sock *sk; 145 struct sock *sk;
146 struct hlist_node *node; 146 struct hlist_node *node;
147 struct nfc_llcp_sock *llcp_sock; 147 struct nfc_llcp_sock *llcp_sock, *tmp_sock;
148 148
149 pr_debug("ssap dsap %d %d\n", ssap, dsap); 149 pr_debug("ssap dsap %d %d\n", ssap, dsap);
150 150
@@ -156,10 +156,12 @@ static struct nfc_llcp_sock *nfc_llcp_sock_get(struct nfc_llcp_local *local,
156 llcp_sock = NULL; 156 llcp_sock = NULL;
157 157
158 sk_for_each(sk, node, &local->sockets.head) { 158 sk_for_each(sk, node, &local->sockets.head) {
159 llcp_sock = nfc_llcp_sock(sk); 159 tmp_sock = nfc_llcp_sock(sk);
160 160
161 if (llcp_sock->ssap == ssap && llcp_sock->dsap == dsap) 161 if (tmp_sock->ssap == ssap && tmp_sock->dsap == dsap) {
162 llcp_sock = tmp_sock;
162 break; 163 break;
164 }
163 } 165 }
164 166
165 read_unlock(&local->sockets.lock); 167 read_unlock(&local->sockets.lock);
@@ -1073,7 +1075,7 @@ static void nfc_llcp_recv_dm(struct nfc_llcp_local *local, struct sk_buff *skb)
1073 } 1075 }
1074 1076
1075 if (llcp_sock == NULL) { 1077 if (llcp_sock == NULL) {
1076 pr_err("Invalid DM\n"); 1078 pr_debug("Already closed\n");
1077 return; 1079 return;
1078 } 1080 }
1079 1081