aboutsummaryrefslogtreecommitdiffstats
path: root/net/nfc/llcp/llcp.c
diff options
context:
space:
mode:
Diffstat (limited to 'net/nfc/llcp/llcp.c')
-rw-r--r--net/nfc/llcp/llcp.c22
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