| .. | .. |
|---|
| 99 | 99 | } |
|---|
| 100 | 100 | |
|---|
| 101 | 101 | llcp_sock->dev = dev; |
|---|
| 102 | | - llcp_sock->local = nfc_llcp_local_get(local); |
|---|
| 102 | + llcp_sock->local = local; |
|---|
| 103 | 103 | llcp_sock->nfc_protocol = llcp_addr.nfc_protocol; |
|---|
| 104 | 104 | llcp_sock->service_name_len = min_t(unsigned int, |
|---|
| 105 | 105 | llcp_addr.service_name_len, |
|---|
| .. | .. |
|---|
| 181 | 181 | } |
|---|
| 182 | 182 | |
|---|
| 183 | 183 | llcp_sock->dev = dev; |
|---|
| 184 | | - llcp_sock->local = nfc_llcp_local_get(local); |
|---|
| 184 | + llcp_sock->local = local; |
|---|
| 185 | 185 | llcp_sock->nfc_protocol = llcp_addr.nfc_protocol; |
|---|
| 186 | 186 | |
|---|
| 187 | 187 | nfc_llcp_sock_link(&local->raw_sockets, sk); |
|---|
| .. | .. |
|---|
| 698 | 698 | if (dev->dep_link_up == false) { |
|---|
| 699 | 699 | ret = -ENOLINK; |
|---|
| 700 | 700 | device_unlock(&dev->dev); |
|---|
| 701 | | - goto put_dev; |
|---|
| 701 | + goto sock_llcp_put_local; |
|---|
| 702 | 702 | } |
|---|
| 703 | 703 | device_unlock(&dev->dev); |
|---|
| 704 | 704 | |
|---|
| 705 | 705 | if (local->rf_mode == NFC_RF_INITIATOR && |
|---|
| 706 | 706 | addr->target_idx != local->target_idx) { |
|---|
| 707 | 707 | ret = -ENOLINK; |
|---|
| 708 | | - goto put_dev; |
|---|
| 708 | + goto sock_llcp_put_local; |
|---|
| 709 | 709 | } |
|---|
| 710 | 710 | |
|---|
| 711 | 711 | llcp_sock->dev = dev; |
|---|
| 712 | | - llcp_sock->local = nfc_llcp_local_get(local); |
|---|
| 712 | + llcp_sock->local = local; |
|---|
| 713 | 713 | llcp_sock->ssap = nfc_llcp_get_local_ssap(local); |
|---|
| 714 | 714 | if (llcp_sock->ssap == LLCP_SAP_MAX) { |
|---|
| 715 | | - nfc_llcp_local_put(llcp_sock->local); |
|---|
| 716 | | - llcp_sock->local = NULL; |
|---|
| 717 | 715 | ret = -ENOMEM; |
|---|
| 718 | | - goto put_dev; |
|---|
| 716 | + goto sock_llcp_nullify; |
|---|
| 719 | 717 | } |
|---|
| 720 | 718 | |
|---|
| 721 | 719 | llcp_sock->reserved_ssap = llcp_sock->ssap; |
|---|
| .. | .. |
|---|
| 760 | 758 | |
|---|
| 761 | 759 | sock_llcp_release: |
|---|
| 762 | 760 | nfc_llcp_put_ssap(local, llcp_sock->ssap); |
|---|
| 763 | | - nfc_llcp_local_put(llcp_sock->local); |
|---|
| 761 | + |
|---|
| 762 | +sock_llcp_nullify: |
|---|
| 764 | 763 | llcp_sock->local = NULL; |
|---|
| 764 | + llcp_sock->dev = NULL; |
|---|
| 765 | + |
|---|
| 766 | +sock_llcp_put_local: |
|---|
| 767 | + nfc_llcp_local_put(local); |
|---|
| 765 | 768 | |
|---|
| 766 | 769 | put_dev: |
|---|
| 767 | 770 | nfc_put_device(dev); |
|---|