diff options
author | Samuel Ortiz <sameo@linux.intel.com> | 2012-10-16 15:15:59 -0400 |
---|---|---|
committer | Samuel Ortiz <sameo@linux.intel.com> | 2012-10-26 12:26:51 -0400 |
commit | a8df0f379213f190eff5f1cfe6b9f81475068d20 (patch) | |
tree | bcdc30efbb33e072e598987d63e09a7cd460a8c3 /net/nfc/llcp | |
parent | b874dec21d1cb7a08fcbe4e442a789419dd1d51f (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.c | 10 |
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 | ||