]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
nfc: llcp: Fix use-after-free in llcp_sock_release()
authorLee Jones <lee@kernel.org>
Wed, 29 Apr 2026 13:40:41 +0000 (13:40 +0000)
committerDavid Heidelberg <david@ixit.cz>
Tue, 5 May 2026 09:37:10 +0000 (11:37 +0200)
llcp_sock_release() unconditionally unlinks the socket from the local
sockets list.  However, if the socket is still in connecting state, it
is on the connecting list.

Fix this by checking the socket state and unlinking from the correct list.

Fixes: b4011239a08e ("NFC: llcp: Fix non blocking sockets connections")
Signed-off-by: Lee Jones <lee@kernel.org>
Link: https://patch.msgid.link/20260429134115.3558604-1-lee@kernel.org
Signed-off-by: David Heidelberg <david@ixit.cz>
net/nfc/llcp_sock.c

index f1be1e84f665373483613068457341d2def5ee4f..feab29fc62f44b8921e019cc2fb439252f3436d7 100644 (file)
@@ -633,6 +633,8 @@ static int llcp_sock_release(struct socket *sock)
 
        if (sock->type == SOCK_RAW)
                nfc_llcp_sock_unlink(&local->raw_sockets, sk);
+       else if (sk->sk_state == LLCP_CONNECTING)
+               nfc_llcp_sock_unlink(&local->connecting_sockets, sk);
        else
                nfc_llcp_sock_unlink(&local->sockets, sk);