diff options
-rw-r--r-- | net/nfc/llcp_sock.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/net/nfc/llcp_sock.c b/net/nfc/llcp_sock.c index 8dfea26536c9..ccdd790e163a 100644 --- a/net/nfc/llcp_sock.c +++ b/net/nfc/llcp_sock.c | |||
@@ -107,9 +107,14 @@ static int llcp_sock_bind(struct socket *sock, struct sockaddr *addr, int alen) | |||
107 | llcp_sock->service_name = kmemdup(llcp_addr.service_name, | 107 | llcp_sock->service_name = kmemdup(llcp_addr.service_name, |
108 | llcp_sock->service_name_len, | 108 | llcp_sock->service_name_len, |
109 | GFP_KERNEL); | 109 | GFP_KERNEL); |
110 | 110 | if (!llcp_sock->service_name) { | |
111 | ret = -ENOMEM; | ||
112 | goto put_dev; | ||
113 | } | ||
111 | llcp_sock->ssap = nfc_llcp_get_sdp_ssap(local, llcp_sock); | 114 | llcp_sock->ssap = nfc_llcp_get_sdp_ssap(local, llcp_sock); |
112 | if (llcp_sock->ssap == LLCP_SAP_MAX) { | 115 | if (llcp_sock->ssap == LLCP_SAP_MAX) { |
116 | kfree(llcp_sock->service_name); | ||
117 | llcp_sock->service_name = NULL; | ||
113 | ret = -EADDRINUSE; | 118 | ret = -EADDRINUSE; |
114 | goto put_dev; | 119 | goto put_dev; |
115 | } | 120 | } |