hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/nfc/llcp_sock.c
....@@ -99,7 +99,7 @@
9999 }
100100
101101 llcp_sock->dev = dev;
102
- llcp_sock->local = nfc_llcp_local_get(local);
102
+ llcp_sock->local = local;
103103 llcp_sock->nfc_protocol = llcp_addr.nfc_protocol;
104104 llcp_sock->service_name_len = min_t(unsigned int,
105105 llcp_addr.service_name_len,
....@@ -181,7 +181,7 @@
181181 }
182182
183183 llcp_sock->dev = dev;
184
- llcp_sock->local = nfc_llcp_local_get(local);
184
+ llcp_sock->local = local;
185185 llcp_sock->nfc_protocol = llcp_addr.nfc_protocol;
186186
187187 nfc_llcp_sock_link(&local->raw_sockets, sk);
....@@ -698,24 +698,22 @@
698698 if (dev->dep_link_up == false) {
699699 ret = -ENOLINK;
700700 device_unlock(&dev->dev);
701
- goto put_dev;
701
+ goto sock_llcp_put_local;
702702 }
703703 device_unlock(&dev->dev);
704704
705705 if (local->rf_mode == NFC_RF_INITIATOR &&
706706 addr->target_idx != local->target_idx) {
707707 ret = -ENOLINK;
708
- goto put_dev;
708
+ goto sock_llcp_put_local;
709709 }
710710
711711 llcp_sock->dev = dev;
712
- llcp_sock->local = nfc_llcp_local_get(local);
712
+ llcp_sock->local = local;
713713 llcp_sock->ssap = nfc_llcp_get_local_ssap(local);
714714 if (llcp_sock->ssap == LLCP_SAP_MAX) {
715
- nfc_llcp_local_put(llcp_sock->local);
716
- llcp_sock->local = NULL;
717715 ret = -ENOMEM;
718
- goto put_dev;
716
+ goto sock_llcp_nullify;
719717 }
720718
721719 llcp_sock->reserved_ssap = llcp_sock->ssap;
....@@ -760,8 +758,13 @@
760758
761759 sock_llcp_release:
762760 nfc_llcp_put_ssap(local, llcp_sock->ssap);
763
- nfc_llcp_local_put(llcp_sock->local);
761
+
762
+sock_llcp_nullify:
764763 llcp_sock->local = NULL;
764
+ llcp_sock->dev = NULL;
765
+
766
+sock_llcp_put_local:
767
+ nfc_llcp_local_put(local);
765768
766769 put_dev:
767770 nfc_put_device(dev);