CVE-2026-23150
Gravedad:
Pendiente de análisis
Tipo:
No Disponible / Otro tipo
Fecha de publicación:
14/02/2026
Última modificación:
14/02/2026
Descripción
*** Pendiente de traducción *** In the Linux kernel, the following vulnerability has been resolved:<br />
<br />
nfc: llcp: Fix memleak in nfc_llcp_send_ui_frame().<br />
<br />
syzbot reported various memory leaks related to NFC, struct<br />
nfc_llcp_sock, sk_buff, nfc_dev, etc. [0]<br />
<br />
The leading log hinted that nfc_llcp_send_ui_frame() failed<br />
to allocate skb due to sock_error(sk) being -ENXIO.<br />
<br />
ENXIO is set by nfc_llcp_socket_release() when struct<br />
nfc_llcp_local is destroyed by local_cleanup().<br />
<br />
The problem is that there is no synchronisation between<br />
nfc_llcp_send_ui_frame() and local_cleanup(), and skb<br />
could be put into local->tx_queue after it was purged in<br />
local_cleanup():<br />
<br />
CPU1 CPU2<br />
---- ----<br />
nfc_llcp_send_ui_frame() local_cleanup()<br />
|- do { &#39;<br />
|- pdu = nfc_alloc_send_skb(..., &err)<br />
| .<br />
| |- nfc_llcp_socket_release(local, false, ENXIO);<br />
| |- skb_queue_purge(&local->tx_queue); |<br />
| &#39; |<br />
|- skb_queue_tail(&local->tx_queue, pdu); |<br />
... |<br />
|- pdu = nfc_alloc_send_skb(..., &err) |<br />
^._________________________________.&#39;<br />
<br />
local_cleanup() is called for struct nfc_llcp_local only<br />
after nfc_llcp_remove_local() unlinks it from llcp_devices.<br />
<br />
If we hold local->tx_queue.lock then, we can synchronise<br />
the thread and nfc_llcp_send_ui_frame().<br />
<br />
Let&#39;s do that and check list_empty(&local->list) before<br />
queuing skb to local->tx_queue in nfc_llcp_send_ui_frame().<br />
<br />
[0]:<br />
[ 56.074943][ T6096] llcp: nfc_llcp_send_ui_frame: Could not allocate PDU (error=-6)<br />
[ 64.318868][ T5813] kmemleak: 6 new suspected memory leaks (see /sys/kernel/debug/kmemleak)<br />
BUG: memory leak<br />
unreferenced object 0xffff8881272f6800 (size 1024):<br />
comm "syz.0.17", pid 6096, jiffies 4294942766<br />
hex dump (first 32 bytes):<br />
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................<br />
27 00 03 40 00 00 00 00 00 00 00 00 00 00 00 00 &#39;..@............<br />
backtrace (crc da58d84d):<br />
kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline]<br />
slab_post_alloc_hook mm/slub.c:4979 [inline]<br />
slab_alloc_node mm/slub.c:5284 [inline]<br />
__do_kmalloc_node mm/slub.c:5645 [inline]<br />
__kmalloc_noprof+0x3e3/0x6b0 mm/slub.c:5658<br />
kmalloc_noprof include/linux/slab.h:961 [inline]<br />
sk_prot_alloc+0x11a/0x1b0 net/core/sock.c:2239<br />
sk_alloc+0x36/0x360 net/core/sock.c:2295<br />
nfc_llcp_sock_alloc+0x37/0x130 net/nfc/llcp_sock.c:979<br />
llcp_sock_create+0x71/0xd0 net/nfc/llcp_sock.c:1044<br />
nfc_sock_create+0xc9/0xf0 net/nfc/af_nfc.c:31<br />
__sock_create+0x1a9/0x340 net/socket.c:1605<br />
sock_create net/socket.c:1663 [inline]<br />
__sys_socket_create net/socket.c:1700 [inline]<br />
__sys_socket+0xb9/0x1a0 net/socket.c:1747<br />
__do_sys_socket net/socket.c:1761 [inline]<br />
__se_sys_socket net/socket.c:1759 [inline]<br />
__x64_sys_socket+0x1b/0x30 net/socket.c:1759<br />
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]<br />
do_syscall_64+0xa4/0xfa0 arch/x86/entry/syscall_64.c:94<br />
entry_SYSCALL_64_after_hwframe+0x77/0x7f<br />
<br />
BUG: memory leak<br />
unreferenced object 0xffff88810fbd9800 (size 240):<br />
comm "syz.0.17", pid 6096, jiffies 4294942850<br />
hex dump (first 32 bytes):<br />
68 f0 ff 08 81 88 ff ff 68 f0 ff 08 81 88 ff ff h.......h.......<br />
00 00 00 00 00 00 00 00 00 68 2f 27 81 88 ff ff .........h/&#39;....<br />
backtrace (crc 6cc652b1):<br />
kmemleak_alloc_recursive include/linux/kmemleak.h:44 [inline]<br />
slab_post_alloc_hook mm/slub.c:4979 [inline]<br />
slab_alloc_node mm/slub.c:5284 [inline]<br />
kmem_cache_alloc_node_noprof+0x36f/0x5e0 mm/slub.c:5336<br />
__alloc_skb+0x203/0x240 net/core/skbuff.c:660<br />
alloc_skb include/linux/skbuff.h:1383 [inline]<br />
alloc_skb_with_frags+0x69/0x3f0 net/core/sk<br />
---truncated---
Impacto
Referencias a soluciones, herramientas e información
- https://git.kernel.org/stable/c/165c34fb6068ff153e3fc99a932a80a9d5755709
- https://git.kernel.org/stable/c/3098e5c8af0f4c8f7eebbb370798df8aa2e12ba5
- https://git.kernel.org/stable/c/61858cbce6ca4bef9ed116c689a4be9520841339
- https://git.kernel.org/stable/c/65e976e1f474ae3bf5681d7abafb8f3fdb34b8cc
- https://git.kernel.org/stable/c/6734ff1ac6beba1d0c22dc9a3dc1849b773b511f
- https://git.kernel.org/stable/c/ab660cb8e17aa93426d1e821c2cce60e4b9bc56a
- https://git.kernel.org/stable/c/f8d002626d434f5fea9085e2557711c16a15cec6



