Vulnerabilities

With the aim of informing, warning and helping professionals with the latest security vulnerabilities in technology systems, we have made a database available for users interested in this information, which is in Spanish and includes all of the latest documented and recognised vulnerabilities.

This repository, with over 75,000 registers, is based on the information from the NVD (National Vulnerability Database) – by virtue of a partnership agreement – through which INCIBE translates the included information into Spanish.

On occasions this list will show vulnerabilities that have still not been translated, as they are added while the INCIBE team is still carrying out the translation process. The CVE  (Common Vulnerabilities and Exposures) Standard for Information Security Vulnerability Names is used with the aim to support the exchange of information between different tools and databases.

All vulnerabilities collected are linked to different information sources, as well as available patches or solutions provided by manufacturers and developers. It is possible to carry out advanced searches, as there is the option to select different criteria to narrow down the results, some examples being vulnerability types, manufacturers and impact levels, among others.

Through RSS feeds or Newsletters we can be informed daily about the latest vulnerabilities added to the repository. Below there is a list, updated daily, where you can discover the latest vulnerabilities.

CVE-2026-31519

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> btrfs: set BTRFS_ROOT_ORPHAN_CLEANUP during subvol create<br /> <br /> We have recently observed a number of subvolumes with broken dentries.<br /> ls-ing the parent dir looks like:<br /> <br /> drwxrwxrwt 1 root root 16 Jan 23 16:49 .<br /> drwxr-xr-x 1 root root 24 Jan 23 16:48 ..<br /> d????????? ? ? ? ? ? broken_subvol<br /> <br /> and similarly stat-ing the file fails.<br /> <br /> In this state, deleting the subvol fails with ENOENT, but attempting to<br /> create a new file or subvol over it errors out with EEXIST and even<br /> aborts the fs. Which leaves us a bit stuck.<br /> <br /> dmesg contains a single notable error message reading:<br /> "could not do orphan cleanup -2"<br /> <br /> 2 is ENOENT and the error comes from the failure handling path of<br /> btrfs_orphan_cleanup(), with the stack leading back up to<br /> btrfs_lookup().<br /> <br /> btrfs_lookup<br /> btrfs_lookup_dentry<br /> btrfs_orphan_cleanup // prints that message and returns -ENOENT<br /> <br /> After some detailed inspection of the internal state, it became clear<br /> that:<br /> - there are no orphan items for the subvol<br /> - the subvol is otherwise healthy looking, it is not half-deleted or<br /> anything, there is no drop progress, etc.<br /> - the subvol was created a while ago and does the meaningful first<br /> btrfs_orphan_cleanup() call that sets BTRFS_ROOT_ORPHAN_CLEANUP much<br /> later.<br /> - after btrfs_orphan_cleanup() fails, btrfs_lookup_dentry() returns -ENOENT,<br /> which results in a negative dentry for the subvolume via<br /> d_splice_alias(NULL, dentry), leading to the observed behavior. The<br /> bug can be mitigated by dropping the dentry cache, at which point we<br /> can successfully delete the subvolume if we want.<br /> <br /> i.e.,<br /> btrfs_lookup()<br /> btrfs_lookup_dentry()<br /> if (!sb_rdonly(inode-&gt;vfs_inode)-&gt;vfs_inode)<br /> btrfs_orphan_cleanup(sub_root)<br /> test_and_set_bit(BTRFS_ROOT_ORPHAN_CLEANUP)<br /> btrfs_search_slot() // finds orphan item for inode N<br /> ...<br /> prints "could not do orphan cleanup -2"<br /> if (inode == ERR_PTR(-ENOENT))<br /> inode = NULL;<br /> return d_splice_alias(NULL, dentry) // NEGATIVE DENTRY for valid subvolume<br /> <br /> btrfs_orphan_cleanup() does test_and_set_bit(BTRFS_ROOT_ORPHAN_CLEANUP)<br /> on the root when it runs, so it cannot run more than once on a given<br /> root, so something else must run concurrently. However, the obvious<br /> routes to deleting an orphan when nlinks goes to 0 should not be able to<br /> run without first doing a lookup into the subvolume, which should run<br /> btrfs_orphan_cleanup() and set the bit.<br /> <br /> The final important observation is that create_subvol() calls<br /> d_instantiate_new() but does not set BTRFS_ROOT_ORPHAN_CLEANUP, so if<br /> the dentry cache gets dropped, the next lookup into the subvolume will<br /> make a real call into btrfs_orphan_cleanup() for the first time. This<br /> opens up the possibility of concurrently deleting the inode/orphan items<br /> but most typical evict() paths will be holding a reference on the parent<br /> dentry (child dentry holds parent-&gt;d_lockref.count via dget in<br /> d_alloc(), released in __dentry_kill()) and prevent the parent from<br /> being removed from the dentry cache.<br /> <br /> The one exception is delayed iputs. Ordered extent creation calls<br /> igrab() on the inode. If the file is unlinked and closed while those<br /> refs are held, iput() in __dentry_kill() decrements i_count but does<br /> not trigger eviction (i_count &gt; 0). The child dentry is freed and the<br /> subvol dentry&amp;#39;s d_lockref.count drops to 0, making it evictable while<br /> the inode is still alive.<br /> <br /> Since there are two races (the race between writeback and unlink and<br /> the race between lookup and delayed iputs), and there are too many moving<br /> parts, the following three diagrams show the complete picture.<br /> (Only the second and third are races)<br /> <br /> Phase 1:<br /> Create Subvol in dentry cache without BTRFS_ROOT_ORPHAN_CLEANUP set<br /> <br /> btrfs_mksubvol()<br /> lookup_one_len()<br /> __lookup_slow()<br /> d_alloc_parallel()<br /> __d_alloc() // d_lockref.count = 1<br /> create_subvol(dentry)<br /> // doesn&amp;#39;t touch the bit..<br /> d_instantiate_new(dentry, inode) // dentry in cache with d_lockref.c<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31511

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> Bluetooth: MGMT: Fix dangling pointer on mgmt_add_adv_patterns_monitor_complete<br /> <br /> This fixes the condition checking so mgmt_pending_valid is executed<br /> whenever status != -ECANCELED otherwise calling mgmt_pending_free(cmd)<br /> would kfree(cmd) without unlinking it from the list first, leaving a<br /> dangling pointer. Any subsequent list traversal (e.g.,<br /> mgmt_pending_foreach during __mgmt_power_off, or another<br /> mgmt_pending_valid call) would dereference freed memory.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31510

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> Bluetooth: L2CAP: Fix null-ptr-deref on l2cap_sock_ready_cb<br /> <br /> Before using sk pointer, check if it is null.<br /> <br /> Fix the following:<br /> <br /> KASAN: null-ptr-deref in range [0x0000000000000260-0x0000000000000267]<br /> CPU: 0 UID: 0 PID: 5985 Comm: kworker/0:5 Not tainted 7.0.0-rc4-00029-ga989fde763f4 #1 PREEMPT(full)<br /> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.17.0-9.fc43 06/10/2025<br /> Workqueue: events l2cap_info_timeout<br /> RIP: 0010:kasan_byte_accessible+0x12/0x30<br /> Code: 79 ff ff ff 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 40 d6 48 c1 ef 03 48 b8 00 00 00 00 00 fc ff df b6 04 07 3c 08 0f 92 c0 c3 cc cce<br /> veth0_macvtap: entered promiscuous mode<br /> RSP: 0018:ffffc90006e0f808 EFLAGS: 00010202<br /> RAX: dffffc0000000000 RBX: ffffffff89746018 RCX: 0000000080000001<br /> RDX: 0000000000000000 RSI: ffffffff89746018 RDI: 000000000000004c<br /> RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000<br /> R10: dffffc0000000000 R11: ffffffff8aae3e70 R12: 0000000000000000<br /> R13: 0000000000000260 R14: 0000000000000260 R15: 0000000000000001<br /> FS: 0000000000000000(0000) GS:ffff8880983c2000(0000) knlGS:0000000000000000<br /> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> CR2: 00005582615a5008 CR3: 000000007007e000 CR4: 0000000000752ef0<br /> PKRU: 55555554<br /> Call Trace:<br /> <br /> __kasan_check_byte+0x12/0x40<br /> lock_acquire+0x79/0x2e0<br /> lock_sock_nested+0x48/0x100<br /> ? l2cap_sock_ready_cb+0x46/0x160<br /> l2cap_sock_ready_cb+0x46/0x160<br /> l2cap_conn_start+0x779/0xff0<br /> ? __pfx_l2cap_conn_start+0x10/0x10<br /> ? l2cap_info_timeout+0x60/0xa0<br /> ? __pfx___mutex_lock+0x10/0x10<br /> l2cap_info_timeout+0x68/0xa0<br /> ? process_scheduled_works+0xa8d/0x18c0<br /> process_scheduled_works+0xb6e/0x18c0<br /> ? __pfx_process_scheduled_works+0x10/0x10<br /> ? assign_work+0x3d5/0x5e0<br /> worker_thread+0xa53/0xfc0<br /> kthread+0x388/0x470<br /> ? __pfx_worker_thread+0x10/0x10<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork+0x51e/0xb90<br /> ? __pfx_ret_from_fork+0x10/0x10<br /> veth1_macvtap: entered promiscuous mode<br /> ? __switch_to+0xc7d/0x1450<br /> ? __pfx_kthread+0x10/0x10<br /> ret_from_fork_asm+0x1a/0x30<br /> <br /> Modules linked in:<br /> ---[ end trace 0000000000000000 ]---<br /> batman_adv: batadv0: Interface activated: batadv_slave_0<br /> batman_adv: batadv0: Interface activated: batadv_slave_1<br /> netdevsim netdevsim7 netdevsim0: set [1, 0] type 2 family 0 port 6081 - 0<br /> netdevsim netdevsim7 netdevsim1: set [1, 0] type 2 family 0 port 6081 - 0<br /> netdevsim netdevsim7 netdevsim2: set [1, 0] type 2 family 0 port 6081 - 0<br /> netdevsim netdevsim7 netdevsim3: set [1, 0] type 2 family 0 port 6081 - 0<br /> RIP: 0010:kasan_byte_accessible+0x12/0x30<br /> Code: 79 ff ff ff 0f 1f 40 00 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 0f 1f 40 d6 48 c1 ef 03 48 b8 00 00 00 00 00 fc ff df b6 04 07 3c 08 0f 92 c0 c3 cc cce<br /> ieee80211 phy39: Selected rate control algorithm &amp;#39;minstrel_ht&amp;#39;<br /> RSP: 0018:ffffc90006e0f808 EFLAGS: 00010202<br /> RAX: dffffc0000000000 RBX: ffffffff89746018 RCX: 0000000080000001<br /> RDX: 0000000000000000 RSI: ffffffff89746018 RDI: 000000000000004c<br /> RBP: 0000000000000000 R08: 0000000000000001 R09: 0000000000000000<br /> R10: dffffc0000000000 R11: ffffffff8aae3e70 R12: 0000000000000000<br /> R13: 0000000000000260 R14: 0000000000000260 R15: 0000000000000001<br /> FS: 0000000000000000(0000) GS:ffff8880983c2000(0000) knlGS:0000000000000000<br /> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> CR2: 00007f7e16139e9c CR3: 000000000e74e000 CR4: 0000000000752ef0<br /> PKRU: 55555554<br /> Kernel panic - not syncing: Fatal exception
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31512

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> Bluetooth: L2CAP: Validate PDU length before reading SDU length in l2cap_ecred_data_rcv()<br /> <br /> l2cap_ecred_data_rcv() reads the SDU length field from skb-&gt;data using<br /> get_unaligned_le16() without first verifying that skb contains at least<br /> L2CAP_SDULEN_SIZE (2) bytes. When skb-&gt;len is less than 2, this reads<br /> past the valid data in the skb.<br /> <br /> The ERTM reassembly path correctly calls pskb_may_pull() before reading<br /> the SDU length (l2cap_reassemble_sdu, L2CAP_SAR_START case). Apply the<br /> same validation to the Enhanced Credit Based Flow Control data path.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31513

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> Bluetooth: L2CAP: Fix stack-out-of-bounds read in l2cap_ecred_conn_req<br /> <br /> Syzbot reported a KASAN stack-out-of-bounds read in l2cap_build_cmd()<br /> that is triggered by a malformed Enhanced Credit Based Connection Request.<br /> <br /> The vulnerability stems from l2cap_ecred_conn_req(). The function allocates<br /> a local stack buffer (`pdu`) designed to hold a maximum of 5 Source Channel<br /> IDs (SCIDs), totaling 18 bytes. When an attacker sends a request with more<br /> than 5 SCIDs, the function calculates `rsp_len` based on this unvalidated<br /> `cmd_len` before checking if the number of SCIDs exceeds<br /> L2CAP_ECRED_MAX_CID.<br /> <br /> If the SCID count is too high, the function correctly jumps to the<br /> `response` label to reject the packet, but `rsp_len` retains the<br /> attacker&amp;#39;s oversized value. Consequently, l2cap_send_cmd() is instructed<br /> to read past the end of the 18-byte `pdu` buffer, triggering a<br /> KASAN panic.<br /> <br /> Fix this by moving the assignment of `rsp_len` to after the `num_scid`<br /> boundary check. If the packet is rejected, `rsp_len` will safely<br /> remain 0, and the error response will only read the 8-byte base header<br /> from the stack.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31514

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> erofs: set fileio bio failed in short read case<br /> <br /> For file-backed mount, IO requests are handled by vfs_iocb_iter_read().<br /> However, it can be interrupted by SIGKILL, returning the number of<br /> bytes actually copied. Unused folios in bio are unexpectedly marked<br /> as uptodate.<br /> <br /> vfs_read<br /> filemap_read<br /> filemap_get_pages<br /> filemap_readahead<br /> erofs_fileio_readahead<br /> erofs_fileio_rq_submit<br /> vfs_iocb_iter_read<br /> filemap_read<br /> filemap_get_pages
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31515

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> af_key: validate families in pfkey_send_migrate()<br /> <br /> syzbot was able to trigger a crash in skb_put() [1]<br /> <br /> Issue is that pfkey_send_migrate() does not check old/new families,<br /> and that set_ipsecrequest() @family argument was truncated,<br /> thus possibly overfilling the skb.<br /> <br /> Validate families early, do not wait set_ipsecrequest().<br /> <br /> [1]<br /> <br /> skbuff: skb_over_panic: text:ffffffff8a752120 len:392 put:16 head:ffff88802a4ad040 data:ffff88802a4ad040 tail:0x188 end:0x180 dev:<br /> kernel BUG at net/core/skbuff.c:214 !<br /> Call Trace:<br /> <br /> skb_over_panic net/core/skbuff.c:219 [inline]<br /> skb_put+0x159/0x210 net/core/skbuff.c:2655<br /> skb_put_zero include/linux/skbuff.h:2788 [inline]<br /> set_ipsecrequest net/key/af_key.c:3532 [inline]<br /> pfkey_send_migrate+0x1270/0x2e50 net/key/af_key.c:3636<br /> km_migrate+0x155/0x260 net/xfrm/xfrm_state.c:2848<br /> xfrm_migrate+0x2140/0x2450 net/xfrm/xfrm_policy.c:4705<br /> xfrm_do_migrate+0x8ff/0xaa0 net/xfrm/xfrm_user.c:3150
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31509

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> nfc: nci: fix circular locking dependency in nci_close_device<br /> <br /> nci_close_device() flushes rx_wq and tx_wq while holding req_lock.<br /> This causes a circular locking dependency because nci_rx_work()<br /> running on rx_wq can end up taking req_lock too:<br /> <br /> nci_rx_work -&gt; nci_rx_data_packet -&gt; nci_data_exchange_complete<br /> -&gt; __sk_destruct -&gt; rawsock_destruct -&gt; nfc_deactivate_target<br /> -&gt; nci_deactivate_target -&gt; nci_request -&gt; mutex_lock(&amp;ndev-&gt;req_lock)<br /> <br /> Move the flush of rx_wq after req_lock has been released.<br /> This should safe (I think) because NCI_UP has already been cleared<br /> and the transport is closed, so the work will see it and return<br /> -ENETDOWN.<br /> <br /> NIPA has been hitting this running the nci selftest with a debug<br /> kernel on roughly 4% of the runs.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31508

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net: openvswitch: Avoid releasing netdev before teardown completes<br /> <br /> The patch cited in the Fixes tag below changed the teardown code for<br /> OVS ports to no longer unconditionally take the RTNL. After this change,<br /> the netdev_destroy() callback can proceed immediately to the call_rcu()<br /> invocation if the IFF_OVS_DATAPATH flag is already cleared on the<br /> netdev.<br /> <br /> The ovs_netdev_detach_dev() function clears the flag before completing<br /> the unregistration, and if it gets preempted after clearing the flag (as<br /> can happen on an -rt kernel), netdev_destroy() can complete and the<br /> device can be freed before the unregistration completes. This leads to a<br /> splat like:<br /> <br /> [ 998.393867] Oops: general protection fault, probably for non-canonical address 0xff00000001000239: 0000 [#1] SMP PTI<br /> [ 998.393877] CPU: 42 UID: 0 PID: 55177 Comm: ip Kdump: loaded Not tainted 6.12.0-211.1.1.el10_2.x86_64+rt #1 PREEMPT_RT<br /> [ 998.393886] Hardware name: Dell Inc. PowerEdge R740/0JMK61, BIOS 2.24.0 03/27/2025<br /> [ 998.393889] RIP: 0010:dev_set_promiscuity+0x8d/0xa0<br /> [ 998.393901] Code: 00 00 75 d8 48 8b 53 08 48 83 ba b0 02 00 00 00 75 ca 48 83 c4 08 5b c3 cc cc cc cc 48 83 bf 48 09 00 00 00 75 91 48 8b 47 08 83 b8 b0 02 00 00 00 74 97 eb 81 0f 1f 80 00 00 00 00 90 90 90<br /> [ 998.393906] RSP: 0018:ffffce5864a5f6a0 EFLAGS: 00010246<br /> [ 998.393912] RAX: ff00000000ffff89 RBX: ffff894d0adf5a05 RCX: 0000000000000000<br /> [ 998.393917] RDX: 0000000000000000 RSI: 00000000ffffffff RDI: ffff894d0adf5a05<br /> [ 998.393921] RBP: ffff894d19252000 R08: ffff894d19252000 R09: 0000000000000000<br /> [ 998.393924] R10: ffff894d19252000 R11: ffff894d192521b8 R12: 0000000000000006<br /> [ 998.393927] R13: ffffce5864a5f738 R14: 00000000ffffffe2 R15: 0000000000000000<br /> [ 998.393931] FS: 00007fad61971800(0000) GS:ffff894cc0140000(0000) knlGS:0000000000000000<br /> [ 998.393936] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033<br /> [ 998.393940] CR2: 000055df0a2a6e40 CR3: 000000011c7fe003 CR4: 00000000007726f0<br /> [ 998.393944] PKRU: 55555554<br /> [ 998.393946] Call Trace:<br /> [ 998.393949] <br /> [ 998.393952] ? show_trace_log_lvl+0x1b0/0x2f0<br /> [ 998.393961] ? show_trace_log_lvl+0x1b0/0x2f0<br /> [ 998.393975] ? dp_device_event+0x41/0x80 [openvswitch]<br /> [ 998.394009] ? __die_body.cold+0x8/0x12<br /> [ 998.394016] ? die_addr+0x3c/0x60<br /> [ 998.394027] ? exc_general_protection+0x16d/0x390<br /> [ 998.394042] ? asm_exc_general_protection+0x26/0x30<br /> [ 998.394058] ? dev_set_promiscuity+0x8d/0xa0<br /> [ 998.394066] ? ovs_netdev_detach_dev+0x3a/0x80 [openvswitch]<br /> [ 998.394092] dp_device_event+0x41/0x80 [openvswitch]<br /> [ 998.394102] notifier_call_chain+0x5a/0xd0<br /> [ 998.394106] unregister_netdevice_many_notify+0x51b/0xa60<br /> [ 998.394110] rtnl_dellink+0x169/0x3e0<br /> [ 998.394121] ? rt_mutex_slowlock.constprop.0+0x95/0xd0<br /> [ 998.394125] rtnetlink_rcv_msg+0x142/0x3f0<br /> [ 998.394128] ? avc_has_perm_noaudit+0x69/0xf0<br /> [ 998.394130] ? __pfx_rtnetlink_rcv_msg+0x10/0x10<br /> [ 998.394132] netlink_rcv_skb+0x50/0x100<br /> [ 998.394138] netlink_unicast+0x292/0x3f0<br /> [ 998.394141] netlink_sendmsg+0x21b/0x470<br /> [ 998.394145] ____sys_sendmsg+0x39d/0x3d0<br /> [ 998.394149] ___sys_sendmsg+0x9a/0xe0<br /> [ 998.394156] __sys_sendmsg+0x7a/0xd0<br /> [ 998.394160] do_syscall_64+0x7f/0x170<br /> [ 998.394162] entry_SYSCALL_64_after_hwframe+0x76/0x7e<br /> [ 998.394165] RIP: 0033:0x7fad61bf4724<br /> [ 998.394188] Code: 89 02 b8 ff ff ff ff eb bb 66 2e 0f 1f 84 00 00 00 00 00 0f 1f 00 f3 0f 1e fa 80 3d c5 e9 0c 00 00 74 13 b8 2e 00 00 00 0f 05 3d 00 f0 ff ff 77 54 c3 0f 1f 00 48 83 ec 28 89 54 24 1c 48 89<br /> [ 998.394189] RSP: 002b:00007ffd7e2f7cb8 EFLAGS: 00000202 ORIG_RAX: 000000000000002e<br /> [ 998.394191] RAX: ffffffffffffffda RBX: 0000000000000001 RCX: 00007fad61bf4724<br /> [ 998.394193] RDX: 0000000000000000 RSI: 00007ffd7e2f7d20 RDI: 0000000000000003<br /> [ 998.394194] RBP: 00007ffd7e2f7d90 R08: 0000000000000010 R09: 000000000000003f<br /> [ 998.394195] R10: 000055df11558010 R11: 0000000000000202 R12: 00007ffd7e2<br /> ---truncated---
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31507

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net/smc: fix double-free of smc_spd_priv when tee() duplicates splice pipe buffer<br /> <br /> smc_rx_splice() allocates one smc_spd_priv per pipe_buffer and stores<br /> the pointer in pipe_buffer.private. The pipe_buf_operations for these<br /> buffers used .get = generic_pipe_buf_get, which only increments the page<br /> reference count when tee(2) duplicates a pipe buffer. The smc_spd_priv<br /> pointer itself was not handled, so after tee() both the original and the<br /> cloned pipe_buffer share the same smc_spd_priv *.<br /> <br /> When both pipes are subsequently released, smc_rx_pipe_buf_release() is<br /> called twice against the same object:<br /> <br /> 1st call: kfree(priv) sock_put(sk) smc_rx_update_cons() [correct]<br /> 2nd call: kfree(priv) sock_put(sk) smc_rx_update_cons() [UAF]<br /> <br /> KASAN reports a slab-use-after-free in smc_rx_pipe_buf_release(), which<br /> then escalates to a NULL-pointer dereference and kernel panic via<br /> smc_rx_update_consumer() when it chases the freed priv-&gt;smc pointer:<br /> <br /> BUG: KASAN: slab-use-after-free in smc_rx_pipe_buf_release+0x78/0x2a0<br /> Read of size 8 at addr ffff888004a45740 by task smc_splice_tee_/74<br /> Call Trace:<br /> <br /> dump_stack_lvl+0x53/0x70<br /> print_report+0xce/0x650<br /> kasan_report+0xc6/0x100<br /> smc_rx_pipe_buf_release+0x78/0x2a0<br /> free_pipe_info+0xd4/0x130<br /> pipe_release+0x142/0x160<br /> __fput+0x1c6/0x490<br /> __x64_sys_close+0x4f/0x90<br /> do_syscall_64+0xa6/0x1a0<br /> entry_SYSCALL_64_after_hwframe+0x77/0x7f<br /> <br /> <br /> BUG: kernel NULL pointer dereference, address: 0000000000000020<br /> RIP: 0010:smc_rx_update_consumer+0x8d/0x350<br /> Call Trace:<br /> <br /> smc_rx_pipe_buf_release+0x121/0x2a0<br /> free_pipe_info+0xd4/0x130<br /> pipe_release+0x142/0x160<br /> __fput+0x1c6/0x490<br /> __x64_sys_close+0x4f/0x90<br /> do_syscall_64+0xa6/0x1a0<br /> entry_SYSCALL_64_after_hwframe+0x77/0x7f<br /> <br /> Kernel panic - not syncing: Fatal exception<br /> <br /> Beyond the memory-safety problem, duplicating an SMC splice buffer is<br /> semantically questionable: smc_rx_update_cons() would advance the<br /> consumer cursor twice for the same data, corrupting receive-window<br /> accounting. A refcount on smc_spd_priv could fix the double-free, but<br /> the cursor-accounting issue would still need to be addressed separately.<br /> <br /> The .get callback is invoked by both tee(2) and splice_pipe_to_pipe()<br /> for partial transfers; both will now return -EFAULT. Users who need<br /> to duplicate SMC socket data must use a copy-based read path.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31506

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> net: bcmasp: fix double free of WoL irq<br /> <br /> We do not need to free wol_irq since it was instantiated with<br /> devm_request_irq(). So devres will free for us.
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026

CVE-2026-31505

Publication date:
22/04/2026
In the Linux kernel, the following vulnerability has been resolved:<br /> <br /> iavf: fix out-of-bounds writes in iavf_get_ethtool_stats()<br /> <br /> iavf incorrectly uses real_num_tx_queues for ETH_SS_STATS. Since the<br /> value could change in runtime, we should use num_tx_queues instead.<br /> <br /> Moreover iavf_get_ethtool_stats() uses num_active_queues while<br /> iavf_get_sset_count() and iavf_get_stat_strings() use<br /> real_num_tx_queues, which triggers out-of-bounds writes when we do<br /> "ethtool -L" and "ethtool -S" simultaneously [1].<br /> <br /> For example when we change channels from 1 to 8, Thread 3 could be<br /> scheduled before Thread 2, and out-of-bounds writes could be triggered<br /> in Thread 3:<br /> <br /> Thread 1 (ethtool -L) Thread 2 (work) Thread 3 (ethtool -S)<br /> iavf_set_channels()<br /> ...<br /> iavf_alloc_queues()<br /> -&gt; num_active_queues = 8<br /> iavf_schedule_finish_config()<br /> iavf_get_sset_count()<br /> real_num_tx_queues: 1<br /> -&gt; buffer for 1 queue<br /> iavf_get_ethtool_stats()<br /> num_active_queues: 8<br /> -&gt; out-of-bounds!<br /> iavf_finish_config()<br /> -&gt; real_num_tx_queues = 8<br /> <br /> Use immutable num_tx_queues in all related functions to avoid the issue.<br /> <br /> [1]<br /> BUG: KASAN: vmalloc-out-of-bounds in iavf_add_one_ethtool_stat+0x200/0x270<br /> Write of size 8 at addr ffffc900031c9080 by task ethtool/5800<br /> <br /> CPU: 1 UID: 0 PID: 5800 Comm: ethtool Not tainted 6.19.0-enjuk-08403-g8137e3db7f1c #241 PREEMPT(full)<br /> Hardware name: QEMU Standard PC (Q35 + ICH9, 2009), BIOS 1.16.3-debian-1.16.3-2 04/01/2014<br /> Call Trace:<br /> <br /> dump_stack_lvl+0x6f/0xb0<br /> print_report+0x170/0x4f3<br /> kasan_report+0xe1/0x180<br /> iavf_add_one_ethtool_stat+0x200/0x270<br /> iavf_get_ethtool_stats+0x14c/0x2e0<br /> __dev_ethtool+0x3d0c/0x5830<br /> dev_ethtool+0x12d/0x270<br /> dev_ioctl+0x53c/0xe30<br /> sock_do_ioctl+0x1a9/0x270<br /> sock_ioctl+0x3d4/0x5e0<br /> __x64_sys_ioctl+0x137/0x1c0<br /> do_syscall_64+0xf3/0x690<br /> entry_SYSCALL_64_after_hwframe+0x77/0x7f<br /> RIP: 0033:0x7f7da0e6e36d<br /> ...<br /> <br /> <br /> The buggy address belongs to a 1-page vmalloc region starting at 0xffffc900031c9000 allocated at __dev_ethtool+0x3cc9/0x5830<br /> The buggy address belongs to the physical page: page: refcount:1 mapcount:0 mapping:0000000000000000<br /> index:0xffff88813a013de0 pfn:0x13a013<br /> flags: 0x200000000000000(node=0|zone=2)<br /> raw: 0200000000000000 0000000000000000 dead000000000122 0000000000000000<br /> raw: ffff88813a013de0 0000000000000000 00000001ffffffff 0000000000000000<br /> page dumped because: kasan: bad access detected<br /> <br /> Memory state around the buggy address:<br /> ffffc900031c8f80: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8<br /> ffffc900031c9000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00<br /> &gt;ffffc900031c9080: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8<br /> ^<br /> ffffc900031c9100: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8<br /> ffffc900031c9180: f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8 f8
Severity CVSS v4.0: Pending analysis
Last modification:
28/04/2026