diff options
Diffstat (limited to 'net/nfc/llcp/llcp.c')
-rw-r--r-- | net/nfc/llcp/llcp.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/net/nfc/llcp/llcp.c b/net/nfc/llcp/llcp.c index 1031abd13fc2..9ab17ec50ce7 100644 --- a/net/nfc/llcp/llcp.c +++ b/net/nfc/llcp/llcp.c | |||
@@ -234,24 +234,12 @@ u8 nfc_llcp_get_sdp_ssap(struct nfc_llcp_local *local, | |||
234 | 234 | ||
235 | return LLCP_WKS_NUM_SAP + ssap; | 235 | return LLCP_WKS_NUM_SAP + ssap; |
236 | 236 | ||
237 | } else if (sock->ssap != 0) { | 237 | } else if (sock->ssap != 0 && sock->ssap < LLCP_WKS_NUM_SAP) { |
238 | if (sock->ssap < LLCP_WKS_NUM_SAP) { | 238 | if (!test_bit(sock->ssap, &local->local_wks)) { |
239 | if (!test_bit(sock->ssap, &local->local_wks)) { | 239 | set_bit(sock->ssap, &local->local_wks); |
240 | set_bit(sock->ssap, &local->local_wks); | 240 | mutex_unlock(&local->sdp_lock); |
241 | mutex_unlock(&local->sdp_lock); | ||
242 | |||
243 | return sock->ssap; | ||
244 | } | ||
245 | |||
246 | } else if (sock->ssap < LLCP_SDP_NUM_SAP) { | ||
247 | if (!test_bit(sock->ssap - LLCP_WKS_NUM_SAP, | ||
248 | &local->local_sdp)) { | ||
249 | set_bit(sock->ssap - LLCP_WKS_NUM_SAP, | ||
250 | &local->local_sdp); | ||
251 | mutex_unlock(&local->sdp_lock); | ||
252 | 241 | ||
253 | return sock->ssap; | 242 | return sock->ssap; |
254 | } | ||
255 | } | 243 | } |
256 | } | 244 | } |
257 | 245 | ||