<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>VulnFeed.org: Linux Kernel</title><link>https://vulnfeed.org/</link><description>Every disclosure, as it lands. Critical-only feed available.</description><language>en</language><atom:link href="https://vulnfeed.org/feed/product/linux-kernel.xml" rel="self" type="application/rss+xml"/><item><title>CVE-2026-99270: tcp: Fix potential UAF in reqsk_timer_handler().</title><link>https://vulnfeed.org/cve/CVE-2026-99270/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99270/</guid><pubDate>Tue, 03 Nov 2026 12:32:09 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tcp: Fix potential UAF in reqsk_timer_handler(). When TCP socket migration fails at inet_ehash_insert() in reqsk_timer_handler(), we jump to the no_ownership: label and free the new reqsk immediately with __reqsk_free(). Thus, we must stop the new reqsk&apos;s timer before jumping to the label, but the timer might be missed since the cited commit, resulting in UAF. As we are in the original reqsk&apos;s timer context, we can safely call timer_delete_sync() for the new reqsk. Let&apos;s pass false to __inet_csk_reqsk_queue_drop() to stop the new reqsk&apos;s timer.</description></item><item><title>CVE-2026-99269: sched_ext: Wait for SCX_OPSS_DISPATCHING before moving tasks off DSQs</title><link>https://vulnfeed.org/cve/CVE-2026-99269/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99269/</guid><pubDate>Tue, 03 Nov 2026 11:48:18 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: sched_ext: Wait for SCX_OPSS_DISPATCHING before moving tasks off DSQs A task can be found on a non-local DSQ while the CPU which dispatched it is still running ops.dequeue() and hasn&apos;t cleared SCX_OPSS_DISPATCHING. The DSQ consume and move paths don&apos;t wait for the dispatch to finish and can operate on the task concurrently with the dispatcher. Call scx_wait_dispatching() in scx_move_local_task_to_local_dsq(), unlink_dsq_and_switch_rq_lock() and move_task_between_dsqs() before they operate on the task. In scx_move_local_task_to_local_dsq(), wait before scx_resolve_local_dsq() as it may update p-&gt;scx.flags.</description></item><item><title>CVE-2026-99264: io_uring/net: don&apos;t retry recv on uncommitted buffers</title><link>https://vulnfeed.org/cve/CVE-2026-99264/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99264/</guid><pubDate>Tue, 03 Nov 2026 11:48:16 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: io_uring/net: don&apos;t retry recv on uncommitted buffers Commit 41b70df5b38b (&quot;io_uring/net: commit partial buffers on retry&quot;) commits ring provided buffers when a receive is going to be retried after a partial transfer, so that another request using the same buffer group can&apos;t be handed the memory the first one keeps receiving into. It commits the number of bytes received so far. That does the job for a single buffer which is consumed as a whole, but the request hangs on to all it has mapped: - For a buffer ring with IOU_PBUF_RING_INC only these bytes are consumed. The rest of the buffer stays at the head of the ring. - For a bundle only the buffers which hold these bytes are consumed, the others that were peeked stay in the ring. In both cases the next receive with that buffer group gets memory that the retried request is still going to write to, and whoever comes last overwrites the data of the other. What the retry fills isn&apos;t committed at all, as the buffer list isn&apos;t known any more at that point. So the kernel hands it out again later on, while the CQE tells the application that it was used, and for an incremental buffer that it is done with. The remainder can&apos;t be committed in advance: if the request ends up receiving less, there is no way to tell the application that more was consumed than the CQE accounts for. Complete the request with what it has got instead of retrying it. MSG_WAITALL is no longer honoured for receives into incremental buffers or multi buffer bundles, they can return a short count, with the request marked as failed like for other short MSG_WAITALL transfers.</description></item><item><title>CVE-2026-99246: tipc: protect node reset trace dump with node lock</title><link>https://vulnfeed.org/cve/CVE-2026-99246/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99246/</guid><pubDate>Tue, 03 Nov 2026 11:18:25 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tipc: protect node reset trace dump with node lock The tipc_node_reset_links trace event asks tipc_node_dump() to walk the node&apos;s link entries. Unlike the other node events that request link data, this event runs without the node lock. This permits bearer teardown to free a link while the trace callback is dumping it: CPU 0 CPU 1 trace_tipc_node_reset_links() tipc_node_dump() l = n-&gt;links[0].link tipc_node_write_lock() kfree(l) n-&gt;links[0].link = NULL tipc_node_write_unlock() tipc_link_dump(l) tipc_link_dump() then dereferences the stale pointer. KASAN reported: BUG: KASAN: slab-use-after-free in tipc_link_dump Read of size 4 by task poc/115 Call Trace: tipc_link_dump+0x10cb/0x16b0 tipc_node_dump+0x4bb/0x740 trace_event_raw_event_tipc_node_class+0x258/0x360 tipc_node_reset_links+0x14d/0x1a0 tipc_rcv+0x13f5/0x3030 tipc_udp_recv+0x4e3/0x670 Allocated by task 0: tipc_link_create+0x1e1/0x1020 tipc_node_check_dest+0x7d2/0x11a0 tipc_disc_rcv+0xdbf/0x1430 Freed by task 89: kfree+0x131/0x3c0 tipc_node_link_down+0x267/0x4b0 tipc_node_delete_links+0xec/0x160 bearer_disable+0x107/0x260 Take the node write lock around the trace event. This serializes the dump against tipc_node_link_down(delete=true), which frees the link under the same write lock.</description></item><item><title>CVE-2026-99239: Bluetooth: L2CAP: refuse __l2cap_chan_add if chan already has conn</title><link>https://vulnfeed.org/cve/CVE-2026-99239/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99239/</guid><pubDate>Mon, 02 Nov 2026 16:06:43 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: Bluetooth: L2CAP: refuse __l2cap_chan_add if chan already has conn l2cap_chan may be linked to l2cap_conn at most once. This is assumed in several places, eg l2cap_chan_del cleanup. There is a TOCTOU race where the invariant is violated: [Task 1] [Task 2] l2cap_chan_connect l2cap_sock_bind l2cap_chan_lock lock_sock l2cap_state_change if (sk-&gt;sk_state != BT_OPEN) chan-&gt;state = BT_CONNECT l2cap_sock_state_change_cb chan-&gt;state = BT_BOUND sk-&gt;sk_state = BT_BOUND lock_sock &lt;------------------ release_sock sk-&gt;sk_state = BT_CONNECT l2cap_sock_connect() does not check sk-&gt;sk_state, so since chan-&gt;state is now BT_BOUND, subsequent connect() ends up with second __l2cap_chan_add. Explicitly document and check the invariant in __l2cap_chan_add with WARN_ON_ONCE. The only callsite where it could be hit is l2cap_chan_connect, so add pre-check there to avoid relying on chan-&gt;state. chan-&gt;state read/write is not properly guarded currently so there can be other TOCTOUC problems. Add l2cap_lock_chan in l2cap_sock_bind() to guard chan-&gt;state write.</description></item><item><title>CVE-2026-99237: tracing: Hold trace_types_lock when resetting last boot data from readers</title><link>https://vulnfeed.org/cve/CVE-2026-99237/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99237/</guid><pubDate>Mon, 02 Nov 2026 16:06:42 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Hold trace_types_lock when resetting last boot data from readers update_last_data_if_empty() is called from tracing_open() with O_TRUNC, tracing_read_pipe() and tracing_buffers_read() without trace_types_lock. Two readers can both pass the LAST_BOOT test and free module_delta twice, and a module notifier can update module_delta while it is being freed. Take trace_types_lock in those paths and keep the callers that already hold it on an unlocked variant.</description></item><item><title>CVE-2026-99238: tracing: Hold trace_types_lock when updating modules in persistent instances</title><link>https://vulnfeed.org/cve/CVE-2026-99238/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99238/</guid><pubDate>Mon, 02 Nov 2026 16:06:42 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Hold trace_types_lock when updating modules in persistent instances trace_module_record() walks ftrace_trace_arrays from the module notifier without trace_types_lock. A concurrent rmdir of an instance removes it from the list and frees it under that lock, so a module load or unload can walk into a freed trace_array.</description></item><item><title>CVE-2026-99235: tracing: Save the event file instead of the compatible histogram</title><link>https://vulnfeed.org/cve/CVE-2026-99235/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99235/</guid><pubDate>Mon, 02 Nov 2026 16:06:41 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Save the event file instead of the compatible histogram create_field_var_hist() creates a histogram on the matched event to supply a field variable, and records it on the target so it can be torn down later: hist_data = find_compatible_hist(target_hist_data, file); ... /* Save the compatible histogram information */ var_hist-&gt;hist_data = hist_data; hist_data is not the histogram it creates. It is one that was already there, whose keys the new one copies. The saved pointer has a single user, unregister_field_var_hists(), which runs when the target is removed: file = hist_data-&gt;field_var_hists[i]-&gt;hist_data-&gt;event_file; find_compatible_hist() matches on keys alone, so it can pick one with no variables of its own. check_var_refs() then returns false and the user can remove it while the target still points at it: BUG: KASAN: slab-use-after-free in event_hist_trigger_free+0x2b2/0x320 Read of size 8 at addr ffff8880093b90e0 by task init/1 Freed by task 1: kfree+0x154/0x420 event_hist_trigger_free+0x1d5/0x320 event_hist_trigger_parse+0x35f3/0x69e0 trigger_process_regex+0x1a6/0x250 Save the event file instead. It is all the dereference ever wanted, and it does not go away when the user removes a trigger.</description></item><item><title>CVE-2026-99236: tracing: Reject incomplete event filter expressions</title><link>https://vulnfeed.org/cve/CVE-2026-99236/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99236/</guid><pubDate>Mon, 02 Nov 2026 16:06:41 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Reject incomplete event filter expressions A non-empty expression normally finishes in predicate_parse()&apos;s inner loop, which resolves the pending logical operators before jumping to finalization. If the input ends after an operator, possibly followed by unary &apos;!&apos; tokens, the outer loop instead falls through with unresolved operator state. For example, &quot;common_pid == 1 || common_pid == 2 &amp;&amp;&quot; leaves prog[0].target equal to -1. The second pass then reads prog[-1] before the forward-jump check can reject it. Depending on adjacent slab contents, it can also copy an out-of-bounds word into a branch target that passes the forward-only check. A self-targeted perf tracepoint counting event can reach this path through PERF_EVENT_IOC_SET_FILTER. Reject the outer-loop fallthrough when a predicate has already been parsed. This ensures that non-empty expressions only reach finalization after the inner loop has resolved their operators. Keep the existing no-filter error for input that has no predicates. Add a regression test for trailing logical operators and unary negations.</description></item><item><title>CVE-2026-99233: tracing/histograms: Verify event_call identity when updating synth_event refcount</title><link>https://vulnfeed.org/cve/CVE-2026-99233/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99233/</guid><pubDate>Mon, 02 Nov 2026 16:06:40 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing/histograms: Verify event_call identity when updating synth_event refcount In event_hist_trigger_parse() and hist_unreg_all(), the histogram registration and unregistration paths look up find_synth_event() using trace_event_name(file-&gt;event_call) and adjust se-&gt;ref if a match is found. Because find_synth_event() only compares the event basename, registering or removing a histogram on a non-synthetic trace event whose basename matches a synthetic event erroneously modifies the synthetic event&apos;s reference count. If a histogram is registered on the non-synthetic event before the synthetic event is created and removed afterwards, se-&gt;ref is decremented without a matching increment, allowing the synthetic event to be freed while an active histogram action still holds a pointer to it. Introduce find_synth_event_call() to verify that &amp;se-&gt;call matches file-&gt;event_call before adjusting se-&gt;ref.</description></item><item><title>CVE-2026-99231: io_uring/waitid: own the request before clearing -&gt;head</title><link>https://vulnfeed.org/cve/CVE-2026-99231/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99231/</guid><pubDate>Mon, 02 Nov 2026 16:06:38 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: own the request before clearing -&gt;head io_waitid_remove_wq() only takes the wait queue lock if -&gt;head is set. io_waitid_wait() clears -&gt;head first thing, before it tries to become the owner of the request by bumping -&gt;refs. If somebody else owns the request at that point, nothing keeps it from completing the request while the wake up handler is still going to touch it: CPU0 (io_waitid_wait) CPU1 (io_waitid, holds a ref) list_del_init(&amp;wait-&gt;entry) smp_store_release(&amp;iw-&gt;head, NULL) __do_wait() finds another child io_waitid_remove_wq() // -&gt;head == NULL, no locking io_waitid_finish(), IOU_COMPLETE // request freed and reused atomic_fetch_inc(&amp;iw-&gt;refs) The same goes for __io_waitid_cancel() if it claims the request in that window. -&gt;refs is part of the per opcode data of the request, so this increments whatever the next user of the request keeps there. If that happens to be zero, the handler concludes that it owns the request, and queues io_waitid_cb() for it. With the window held open by a delay, and the request reused for a receive that is waiting for data: BUG: KASAN: slab-use-after-free in __wake_up_common+0x1ca/0x1f0 __wake_up_sync_key+0x36/0x50 sock_def_readable+0xf1/0x420 unix_stream_sendmsg+0x60b/0x1110 Allocated by task 87: io_arm_apoll+0x1ed/0x940 Freed by task 87: __io_submit_flush_completions+0x118d/0x1a10 tctx_task_work_run+0x327/0x950 Only clear -&gt;head once the handler owns the request. If it doesn&apos;t, the owner finds -&gt;head set and has to wait for the lock, which is held by the caller of the handler. Deleting the already deleted entry again is harmless.</description></item><item><title>CVE-2026-99227: io_uring/waitid: prevent cancel reference wrap</title><link>https://vulnfeed.org/cve/CVE-2026-99227/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99227/</guid><pubDate>Mon, 02 Nov 2026 16:06:36 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: io_uring/waitid: prevent cancel reference wrap io_waitid packs the cancellation state into bit 31 of -&gt;refs and uses bits 30:0 as a 31-bit reference counter: #define IO_WAITID_CANCEL_FLAG BIT(31) #define IO_WAITID_REF_MASK GENMASK(30, 0) __io_waitid_cancel() marks a request canceled, then increments the low bits of -&gt;refs to claim completion ownership. When another path owns the request, the increment remains even though cancellation returns false. The request remains discoverable by cancellation, so repeated failed attempts can wrap the 31-bit reference field to zero. A later cancellation can claim ownership and complete the request a second time. Use atomic_fetch_or() when setting the cancel flag and inspect the old flag value. The first cancel attempt continues to the existing ownership increment, preserving its wake and issuer handoff semantics. Later attempts see the cancel flag and return without incrementing the reference field. This makes repeated failed cancellation attempts idempotent while leaving the first-cancel state transitions unchanged.</description></item><item><title>CVE-2026-99224: keys: Protect the type name while describing a key</title><link>https://vulnfeed.org/cve/CVE-2026-99224/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99224/</guid><pubDate>Mon, 02 Nov 2026 16:06:34 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: keys: Protect the type name while describing a key keyctl_describe_key() must keep the key type&apos;s name alive until kasprintf() has consumed it. The retained key reference keeps the key and its description alive, but does not pin the module providing its type. The name is passed to kasprintf() without holding key-&gt;sem. kvasprintf() uses the saved name pointer in two formatting passes, with a GFP_KERNEL allocation between them. With AF_RXRPC=m, a task that passes View permission before type retirement can overlap a privileged module unload in this order: 1. KEYCTL_DESCRIBE looks up the key, saves key-&gt;type-&gt;name in the kasprintf() arguments and completes the first formatting pass. 2. While the formatter is delayed before its second pass, af_rxrpc_exit() calls unregister_key_type(), which removes the type from the registry and waits for key_gc_keytype(). 3. The collector takes key-&gt;sem for writing, retypes the retained key to key_type_dead and completes retirement. Unregistration and module exit return, allowing free_module() to release the type and name. 4. The formatter resumes its second pass and reads the saved name from released module storage, which can fault in string(). Hold key-&gt;sem for reading across kasprintf(). The collector then cannot retype the key or complete retirement until both formatting passes have finished. If retirement wins the lock first, formatting uses the core key_type_dead name instead. Release the semaphore immediately after kasprintf(), including on allocation failure, before copying to userspace. Oops report as below: BUG: unable to handle page fault for address: fffffbfff8054794 #PF: supervisor read access in kernel mode #PF: error_code(0x0000) - not-present page RIP: 0010:string+0x23f/0x470 Call Trace: vsnprintf+0x330/0x1110</description></item><item><title>CVE-2026-99218: coredump: hold RCU while releasing parked threads</title><link>https://vulnfeed.org/cve/CVE-2026-99218/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99218/</guid><pubDate>Mon, 02 Nov 2026 16:06:31 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: coredump: hold RCU while releasing parked threads coredump_finish() releases the parked threads by clearing -&gt;task in their core_thread entry and calling wake_up_process() on each of them. It does that without holding a reference on the task and without being inside rcu. But calling wake_up_process(task) without rcu here isn&apos;t safe. A parked thread doesn&apos;t need that wakeup to leave. A spurious wakeup or a preemption after the store is enough for the task to go away. So if the coredump client is preempted between the store and wake_up_process() the thread can exit and be freed in the meantime and try_to_wake_up() takes pi_lock in freed memory. Hold rcu across the loop.</description></item><item><title>CVE-2026-99185: firewire: core: fix race condition in split transaction handling</title><link>https://vulnfeed.org/cve/CVE-2026-99185/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99185/</guid><pubDate>Wed, 28 Oct 2026 11:17:39 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: firewire: core: fix race condition in split transaction handling For a split transaction, either fw_core_handle_response() or split_transaction_timeout_callback() may manipulate the same transaction entry in the pending transaction list. The return value of timer_delete() is used to determine which function handles the entry. If the transaction is a split transaction and timer_delete() returns zero, the timeout callback may already be running. In this case, the response handler must leave the entry in the list for the timeout callback to remove. A previous code refactoring broke this behavior, introducing a race condition in which both functions could process the same transaction. This could lead to a use-after-free on the transaction initiator side. Fix the regression by ensuring that the response handler does not process the transaction when timer_delete() returns zero. The timeout callback is responsible for removing the entry from the pending transaction list.</description></item><item><title>CVE-2026-99177: KVM: SEV: Fix page dirtying in sev_gmem_post_populate()</title><link>https://vulnfeed.org/cve/CVE-2026-99177/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99177/</guid><pubDate>Wed, 28 Oct 2026 11:17:38 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: KVM: SEV: Fix page dirtying in sev_gmem_post_populate() set_page_dirty() requires that the caller holds some kind of lock to ensure that the page&apos;s mapping does not concurrently go away. That is not the case for a random page we got from get_user_pages_fast(), so use set_page_dirty_lock(). [sean: tag for stable]</description></item><item><title>CVE-2026-99180: unicode: free the map after a grace period</title><link>https://vulnfeed.org/cve/CVE-2026-99180/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99180/</guid><pubDate>Wed, 28 Oct 2026 11:17:38 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: unicode: free the map after a grace period generic_ci_d_hash() and generic_ci_d_compare() read sb-&gt;s_encoding and dereference the unicode map while a pathwalk in rcu mode holds nothing but rcu_read_lock(). The filesystems that use them, ext4, f2fs and tmpfs, drop the map with utf8_unload() from -&gt;put_super(), which runs when the last reference to the mount goes away. A lookup that is still inside such a filesystem at that point reads a freed map. With a pathwalk held up in utf8_casefold_hash() while the last reference to a casefolded tmpfs goes away: BUG: KASAN: slab-use-after-free in utf8nlookup+0x74c/0x950 Read of size 8 at addr ff110001030fe658 by task walker/98 Call Trace: &lt;TASK&gt; utf8nlookup+0x74c/0x950 utf8byte+0x160/0x1560 utf8_casefold_hash+0x167/0x230 generic_ci_d_hash+0xdd/0x1c0 link_path_walk+0x11ad/0x1d30 path_lookupat+0x63/0xb00 filename_lookup+0x1f1/0x5b0 vfs_statx+0xd7/0x3b0 [...] Allocated by task 94: __kmalloc_cache_noprof+0x249/0x560 utf8_load+0x4e/0x570 shmem_parse_opt_casefold.isra.0+0x92/0x270 [...] Freed by task 97: kfree+0x1db/0x5b0 shmem_put_super+0x72/0x170 generic_shutdown_super+0x14c/0x530 kill_anon_super+0x3a/0x60 deactivate_locked_super+0x9c/0xf0 cleanup_mnt+0x9f/0x130 So far that has been hard to hit. umount(2) waits for a grace period in namespace_unlock() before it drops the mount, so only a mount whose last reference goes away elsewhere, like the close of a file or a chdir out of a lazily unmounted directory, can race a walker. So it is reachable. Delay the free until a grace period has passed. The map and the data table it holds a reference to then outlive any pathwalk that found the superblock before the mount went away. The reference on the data table module is dropped from the rcu callback as well. utf8-core is built in whenever CONFIG_UNICODE is set, so there is no module exit that would have to wait for the callbacks. Overlayfs points the s_encoding of an overl…</description></item><item><title>CVE-2026-99167: net/sched: fix use-after-free in __tcf_action_put()</title><link>https://vulnfeed.org/cve/CVE-2026-99167/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99167/</guid><pubDate>Wed, 28 Oct 2026 11:17:37 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: net/sched: fix use-after-free in __tcf_action_put() __tcf_action_put() decrements the reference count before decrementing the binding count. Another thread can free the action between these operations, causing the binding-count update to access freed memory. KASAN reports it as: BUG: KASAN: slab-use-after-free in __tcf_action_put+0x327/0x340 Write of size 4 at addr ff11000000d46420 by task tc-put-pause/64 Hold the action IDR mutex across both counter updates and IDR removal, keeping cleanup outside the lock.</description></item><item><title>CVE-2026-99170: namespace: a mount that copy_tree() leaves out can&apos;t take over a lock</title><link>https://vulnfeed.org/cve/CVE-2026-99170/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99170/</guid><pubDate>Wed, 28 Oct 2026 11:17:37 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: namespace: a mount that copy_tree() leaves out can&apos;t take over a lock Since commit c62a4766937e (&quot;move_mount: transfer MNT_LOCKED&quot;) a mount can be moved beneath a locked mount. The lock moves from the old cover to the new mount which takes over the job of hiding what&apos;s under it and the old cover can be unmounted. That works as long as the new mount stays. But the caller picks the new mount and copy_tree() leaves a mount of a mount namespace file out of every copy made without CL_COPY_MNT_NS_FILE, together with everything mounted on it, and never looks at MNT_LOCKED. unshare(CLONE_NEWNS) and mount propagation make such copies. So a task that is root in its own user namespace gets rid of a locked cover on a file without a race and without touching the filesystem below it. It makes a child with a mount namespace of its own, binds the child&apos;s /proc/&lt;pid&gt;/ns/mnt beneath the cover with MOVE_MOUNT_BENEATH, which hands the lock to that bind, and calls unshare(CLONE_NEWNS). The new mount namespace has nothing on the file. That&apos;s the usual way to mask a single file, a bind of /dev/null or of an empty file. With a bind of an ordinary file the file stays covered. copy_tree() already refuses to leave out a locked unbindable mount with -EPERM since commit df7342b24018 (&quot;mount: Don&apos;t allow copying MNT_UNBINDABLE|MNT_LOCKED mounts&quot;). Do the same for a locked mount of a mount namespace file. That also covers a tree copied with CL_COPY_MNT_NS_FILE and attached into a mount namespace of another user namespace where lock_mnt_tree() locks it. Note that unshare(CLONE_NEWNS) and clone(CLONE_NEWNS) fail with EPERM from such a mount namespace from then on. The mount can&apos;t be left out and it can&apos;t be unmounted. And refuse to move a mount of a mount namespace file beneath a locked mount in the first place. Otherwise the task ends up with a mount it can&apos;t unmount and an unshare() that fails for good. Chris also found a second…</description></item><item><title>CVE-2026-99173: eventfs: Free the eventfs_inode after an rcu grace period too</title><link>https://vulnfeed.org/cve/CVE-2026-99173/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99173/</guid><pubDate>Wed, 28 Oct 2026 11:17:37 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: eventfs: Free the eventfs_inode after an rcu grace period too tracefs_d_revalidate() reads -&gt;is_freed of the eventfs_inode that dentry-&gt;d_fsdata points to, and -&gt;d_revalidate() is called in rcu pathwalk mode with nothing but rcu_read_lock() held. The dentry itself stays around for such a walker, but tracefs_d_release() drops its reference to the eventfs_inode when the dentry is killed, and release_ei() then frees it after a grace period of eventfs_srcu. An SRCU grace period doesn&apos;t wait for rcu_read_lock() sections, so the walker can read an eventfs_inode that is already gone. With a pathwalk held up in tracefs_d_revalidate() while the dentry goes away: BUG: KASAN: slab-use-after-free in tracefs_d_revalidate+0x76/0x90 Read of size 1 at addr ff1100010152d8d0 by task walker/97 Call Trace: &lt;TASK&gt; tracefs_d_revalidate+0x76/0x90 lookup_fast+0x320/0x640 path_lookupat+0x160/0xb00 filename_lookup+0x1f1/0x5b0 vfs_statx+0xd7/0x3b0 vfs_fstatat+0x4d/0x90 __do_sys_newfstatat+0xa0/0x100 do_syscall_64+0x10e/0x5e0 entry_SYSCALL_64_after_hwframe+0x77/0x7f [...] Allocated by task 1: __kmalloc_cache_noprof+0x249/0x560 eventfs_create_dir+0x7a/0x590 event_create_dir+0x2fb/0xcf0 trace_add_event_call+0xbf/0x150 [...] Freed by task 11: kfree+0x1db/0x5b0 srcu_invoke_callbacks+0x3a3/0x620 process_one_work+0x937/0x1810 worker_thread+0x4f1/0xd60 Before commit 8e556432477e (&quot;eventfs: Use SRCU for freeing eventfs_inodes&quot;) release_ei() used call_rcu(), which covered the walker, while eventfs_iterate() needs the SRCU grace period. Wait for both and chain call_rcu() from the SRCU callback.</description></item><item><title>CVE-2026-99163: tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields</title><link>https://vulnfeed.org/cve/CVE-2026-99163/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99163/</guid><pubDate>Wed, 28 Oct 2026 11:17:36 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing/histograms: Reject non-stacktrace fields for synthetic stacktrace fields In check_synth_field(), when a synthetic event field is a stacktrace (field-&gt;is_stack) and the histogram field is not a &quot;long[&quot; stacktrace array, validation falls through to the generic size and signedness comparison. Because parse_synth_field() sets a stacktrace field&apos;s type to &quot;__data_loc unsigned long[]&quot;, its size is sizeof(u64) and synth_field_signed() marks it as signed. Consequently, any 8-byte signed scalar histogram field passes the fallback check, and its scalar value is subsequently dereferenced as a kernel stacktrace pointer in get_field_size() and trace_stack(). Furthermore, checking strstr(hist_field-&gt;type, &quot;long[&quot;) is insufficient because tracepoint fields defined with __bitmask() or __rel_bitmask() also have type &quot;__data_loc unsigned long[]&quot; or &quot;__rel_loc unsigned long[]&quot;, whilst create_hist_field() treats them as 4-byte scalar values without HIST_FIELD_FL_STACKTRACE. Propagate HIST_FIELD_FL_STACKTRACE to variable references and field variables (whilst excluding variable aliases from per-element stacktrace capture), and reject any mismatch between HIST_FIELD_FL_STACKTRACE and field-&gt;is_stack in check_synth_field().</description></item><item><title>CVE-2026-99164: spi: imx: fix slab corruption from undersized DMA bounce buffers</title><link>https://vulnfeed.org/cve/CVE-2026-99164/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99164/</guid><pubDate>Wed, 28 Oct 2026 11:17:36 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: spi: imx: fix slab corruption from undersized DMA bounce buffers Since commit faa8e404ad8e (&quot;spi: imx: support dynamic burst length for ECSPI DMA mode&quot;), the driver allocates its private DMA TX/RX buffers with kzalloc(dma_len), where dma_len is only rounded up to 4 bytes, but maps, syncs and unmaps them with DMA_CACHE_ALIGNED_LEN(dma_len), i.e. rounded up to the cache line size. As a result, the DMA API operates on memory beyond the end of the allocation. This was observed on a custom i.MX8MP platform with an mcp251xfd CAN controller under heavy RPMSG load, as a series of refcount_t warnings triggered from rpmsg_recv_done() in virtio_rpmsg_bus: refcount_t: addition on 0; use-after-free. refcount_t: underflow; use-after-free. refcount_t: saturated; leaking memory. Leading finally to an &quot;Unable to handle kernel paging request&quot; oops. Reproducing this problem took between 30 minutes and roughly 30 hours under the same workload. Hardware watchpoints on the refcount of a struct rpmsg_endpoint showed it was overwritten from 2 to 1 by __pi_memcpy_generic() in the irq/155-spi2.0 thread. Additionally it was found that a &quot;normal&quot; rpmsg_recv_done() took 11µs +/-2µs from its kref_get to kref_put. In the error case the same sequence took about 215µs +/-10µs. Based on this, an LLM was used to identify the size mismatch fixed here. Allocate the buffers with DMA_CACHE_ALIGNED_LEN(dma_len) so they cover the full mapped length, and use the same length for dma_sync_single_for_cpu() to stay consistent with map and unmap. With this patch applied, the same workload ran for more than 200 hours without the problem reproducing.</description></item><item><title>CVE-2026-99152: scsi: libiscsi: Validate the task named by a management response</title><link>https://vulnfeed.org/cve/CVE-2026-99152/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99152/</guid><pubDate>Wed, 28 Oct 2026 11:17:35 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: scsi: libiscsi: Validate the task named by a management response __iscsi_complete_pdu() fetches the task for five response types from one place and checks only that the index resolved: case ISCSI_OP_LOGOUT_RSP: case ISCSI_OP_LOGIN_RSP: case ISCSI_OP_TEXT_RSP: case ISCSI_OP_SCSI_TMFUNC_RSP: case ISCSI_OP_NOOP_IN: task = iscsi_itt_to_task(conn, hdr-&gt;itt); if (!task) return ISCSI_ERR_BAD_ITT; iscsi_itt_to_task() bounds the index against cmds_max and looks at nothing else, so a target can name any slot in the pool, including one that has never been used. task-&gt;conn is then NULL, and both iscsi_nop_out_rsp() and iscsi_complete_task() dereference it. One unsolicited NOP-In is enough; a Text Response carrying the same ITT crashes in iscsi_complete_task() instead. Require the task to be in flight and not a SCSI command, the way iscsi_itt_to_ctask() does for the command opcodes. [ 6.298634] Oops: general protection fault, probably for non-canonical address 0xdffffc000000000c: 0000 [#1] SMP KASAN NOPTI [ 6.298642] KASAN: null-ptr-deref in range [0x0000000000000060-0x0000000000000067] [ 6.298652] CPU: 1 UID: 0 PID: 111 Comm: iscsistart Not tainted 7.2.0-rc5-ISCSI1-gf5098b6bae76 #1 PREEMPT(lazy) [ 6.298654] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 6.298656] RIP: 0010:iscsi_nop_out_rsp.constprop.0+0x46/0x160 [ 6.298691] Code: c1 ea 03 48 83 ec 08 80 3c 02 00 0f 85 f5 00 00 00 48 b8 00 00 00 00 00 fc ff df 48 8b 6b 58 48 8d 7d 60 48 89 fa 48 c1 ea 03 &lt;80&gt; 3c 02 00 0f 85 c0 00 00 00 48 8b 45 60 48 39 c3 74 50 48 b8 00 [ 6.298698] RSP: 0018:ffff88806c907be8 EFLAGS: 00010206 [ 6.298701] RAX: dffffc0000000000 RBX: ffff888006116800 RCX: 0000000000000020 [ 6.298702] RDX: 000000000000000c RSI: ffff88800525d578 RDI: 0000000000000060 [ 6.298703] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000 [ 6.298706] R10: 0000000000000020 R…</description></item><item><title>CVE-2026-99153: scsi: libiscsi: Validate the ITT reflected in a Reject PDU</title><link>https://vulnfeed.org/cve/CVE-2026-99153/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99153/</guid><pubDate>Wed, 28 Oct 2026 11:17:35 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: scsi: libiscsi: Validate the ITT reflected in a Reject PDU A Reject PDU carries a copy of the header it rejects, and iscsi_handle_reject() takes the ITT out of that copy to find the task to clean up: memcpy(&amp;rejected_pdu, data, sizeof(struct iscsi_hdr)); ... task = iscsi_itt_to_task(conn, rejected_pdu.itt); That value is whatever the target put there. iscsi_itt_to_task() bounds the index against cmds_max and checks nothing else, so any task in the pool can be named, and iscsi_nop_out_rsp() then completes it. An index that has never been used gives a NULL task-&gt;conn: the pool is zeroed at session setup and conn is assigned only when a task is allocated. If the task was used and returned, iscsi_complete_task() hits its WARN_ON_ONCE(task-&gt;state == ISCSI_TASK_FREE) and the refcount underflows. An in-flight SCSI command is completed as successful - a 1 MiB read returned 1048576 with none of its buffer written and no warning. Validate the reflected ITT the way iscsi_itt_to_ctask() validates a command ITT, and require the task to be in flight and not a SCSI command. [ 6.248477] Oops: general protection fault, probably for non-canonical address 0xdffffc000000000c: 0000 [#1] SMP KASAN NOPTI [ 6.249357] KASAN: null-ptr-deref in range [0x0000000000000060-0x0000000000000067] [ 6.249951] CPU: 1 UID: 0 PID: 0 Comm: swapper/1 Not tainted 7.2.0-rc5-ISCSI1-gf5098b6bae76 #1 PREEMPT(lazy) [ 6.250718] Hardware name: QEMU Ubuntu 24.04 PC v2 (i440FX + PIIX, arch_caps fix, 1996), BIOS 1.16.3-debian-1.16.3-2 04/01/2014 [ 6.251616] RIP: 0010:iscsi_nop_out_rsp.constprop.0+0x46/0x160 [ 6.252043] Code: c1 ea 03 48 83 ec 08 80 3c 02 00 0f 85 f5 00 00 00 48 b8 00 00 00 00 00 fc ff df 48 8b 6b 58 48 8d 7d 60 48 89 fa 48 c1 ea 03 &lt;80&gt; 3c 02 00 0f 85 c0 00 00 00 48 8b 45 60 48 39 c3 74 50 48 b8 00 [ 6.252813] RSP: 0018:ffff88806c907b80 EFLAGS: 00010206 [ 6.253042] RAX: dffffc0000000000 RBX: ffff88800607e000 RCX: ffffffff8d571a25 […</description></item><item><title>CVE-2026-99154: scsi: libiscsi: Reject a negative task index from parse_pdu_itt</title><link>https://vulnfeed.org/cve/CVE-2026-99154/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99154/</guid><pubDate>Wed, 28 Oct 2026 11:17:35 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: scsi: libiscsi: Reject a negative task index from parse_pdu_itt A transport that implements parse_pdu_itt hands libiscsi an index taken from the PDU, and both lookups bound it from above only: if (i &gt;= session-&gt;cmds_max) i and cmds_max are both int, so a negative index passes and session-&gt;cmds[i] is read from before the array. be2iscsi produces one. beiscsi_parse_pdu() assigns the raw tag, *index = (int)itt; and beiscsi_complete_pdu() forwards an unsolicited NOP-In from the hardware async ring without replacing its ITT, so the value is the target&apos;s. It also reports the session&apos;s own age rather than the one in the tag, which leaves the age comparison in iscsi_verify_itt() with nothing to reject. Bound the index from below in both lookups.</description></item><item><title>CVE-2026-99156: scsi: st: Fix use-after-free race between st_remove() and st_open()</title><link>https://vulnfeed.org/cve/CVE-2026-99156/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99156/</guid><pubDate>Wed, 28 Oct 2026 11:17:35 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: scsi: st: Fix use-after-free race between st_remove() and st_open() st_remove() drops the probe reference on the scsi_tape with kref_put() and only afterwards removes its index from st_index_idr. If that was the last reference, scsi_tape_release() frees the structure while it is still published in the idr. scsi_tape_get(), called from st_open(), looks up the tape in st_index_idr and takes a reference under st_ref_mutex and st_index_lock. remove_cdevs() does not wait for opens that are already past chrdev_open(), so an open that is blocked on st_ref_mutex while st_remove() holds it can take the mutex as soon as st_remove() drops it, find the freed tpnt in the idr and call kref_get() on it: BUG: KASAN: slab-use-after-free in st_open Write of size 4 ... st_open (drivers/scsi/st.c:254 drivers/scsi/st.c:1291) chrdev_open ... Freed by task ...: kfree st_remove (drivers/scsi/st.c:4512) Remove the index from the idr before dropping the reference, all under st_ref_mutex. A concurrent scsi_tape_get() now either runs first and holds a valid reference that keeps the tape alive, or runs afterwards and finds nothing, so st_open() fails with -ENXIO. This restores the ordering st_remove() had before the conversion to st_index_idr, where the tape was unpublished from scsi_tapes[] before the final kref_put().</description></item><item><title>CVE-2026-99142: tracing: Check operator stack capacity before pushing</title><link>https://vulnfeed.org/cve/CVE-2026-99142/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99142/</guid><pubDate>Wed, 28 Oct 2026 11:17:34 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Check operator stack capacity before pushing predicate_parse() uses the first operator stack entry before processing any opening parentheses. A push then increments top before writing. The existing check still permits that write when top already points to the last allocated entry, which can access beyond the operator stack. Reject the push when top reaches the last allocated entry.</description></item><item><title>CVE-2026-99143: tracing: Keep the predicate limit separate from program capacity</title><link>https://vulnfeed.org/cve/CVE-2026-99143/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99143/</guid><pubDate>Wed, 28 Oct 2026 11:17:34 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: tracing: Keep the predicate limit separate from program capacity predicate_parse() adds two to nr_preds to reserve the terminal TRUE and FALSE entries. It also uses that increased value as the limit for parsed predicates. If the initial count is smaller than the number actually parsed, the program can fill the allocation and subsequent accesses can go past its end. Keep nr_preds as the predicate limit and use a separate value for the allocation size. This leaves space for both terminal entries and a zeroed entry when parsing stops at the limit.</description></item><item><title>CVE-2026-99148: drm/amdgpu: keep the eviction fence until the last handle is closed</title><link>https://vulnfeed.org/cve/CVE-2026-99148/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99148/</guid><pubDate>Wed, 28 Oct 2026 11:17:34 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: drm/amdgpu: keep the eviction fence until the last handle is closed amdgpu_gem_object_close() detaches the user queue eviction fence from the BO before it checks bo_va-&gt;ref_count, so closing any handle of a BO removes the fence, even when the file still has another handle to the BO and the bo_va with its GPU mappings stays. The BO can then be evicted without suspending the user queues of the file, which keep accessing it through mappings that are only marked for update. Seen on navi31 with a SDMA user queue: a BO opened twice in the same file (GEM_FLINK + GEM_OPEN) loses its eviction fence when the second handle is closed (traced attach/detach of the fence): attach bo=ffff8c78a6c84c00 GEM_CLOSE handle=7 detach bo=ffff8c78a6c84c00 while handle 6 and the mapping are still in use. Only detach the fence when the last reference to the bo_va goes away, matching amdgpu_gem_object_open(), which attaches it only when the bo_va is created. With this the fence stays until the file is closed. (cherry picked from commit 8387982f03d4026b7dc11b0b5e3118298eee4d6a)</description></item><item><title>CVE-2026-99136: dm-crypt: fix a tiny race condition in crypt_dec_pending</title><link>https://vulnfeed.org/cve/CVE-2026-99136/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99136/</guid><pubDate>Wed, 28 Oct 2026 11:17:33 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: dm-crypt: fix a tiny race condition in crypt_dec_pending crypt_dec_pending reads io-&gt;error before calling atomic_dec_and_test. Another context, for example crypt_endio called from an interrupt, may set io-&gt;error and drop its reference between the read and the decrement. crypt_dec_pending then drops the last reference and completes the bio with the stale status - so a read that failed and was never decrypted, or a write that failed, is reported as successful. The read was placed before the decrement by commit b35f8caa0890 (&quot;dm crypt: wait for endio to complete before destruction&quot;), because that commit freed dm_crypt_io before calling bio_endio. This is no longer the case, dm_crypt_io lives in the per-bio data now. Read io-&gt;error after atomic_dec_and_test instead. atomic_dec_and_test is fully ordered, so no additional barrier is needed.</description></item><item><title>CVE-2026-99131: xfs: fix capability check in xfs</title><link>https://vulnfeed.org/cve/CVE-2026-99131/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99131/</guid><pubDate>Wed, 28 Oct 2026 11:17:32 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: xfs: fix capability check in xfs An user reported a bug where he managed to evade group&apos;s quota by changing a file&apos;s gid to a different group id the same user belonged to, even though quotas were enforced on both gids and the file&apos;s size was big enough to exceed the quota&apos;s hardlimit. Commit eba0549bc7d1 replaced a capable() call by a has_capability_noaudit() to prevent unnecessary selinux audit messages. Turns out that both calls have slightly different semantics even though their documentation seems similar. Where in a nutshell: capable() - Tests the task&apos;s effective credentials has_ns_capability_noaudit() - Tests the task&apos;s real credentials This most of the time has no practical difference but in some cases like changing attrs (specifically group id in this case) through a NFS client this will allow the quota code to use XFS_QMOPT_FORCE_RES, effectively bypassing quota accounting checks. Using instead ns_capable_noaudit() should fix this issue and prevent selinux audit messages. This also fix the remaining calls to has_capability_noaudit()</description></item><item><title>CVE-2026-99116: net: psp: do not inherit the Rx association on clone</title><link>https://vulnfeed.org/cve/CVE-2026-99116/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99116/</guid><pubDate>Wed, 28 Oct 2026 11:17:31 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: net: psp: do not inherit the Rx association on clone sk-&gt;psp_assoc sits past sk_dontcopy_end, so sock_copy() copies it into every socket accepted from a listener without taking a reference, while inet_sock_destruct() puts for every inet socket. psp_twsk_init() does refcount_inc() for the timewait socket, so a child closing through TIME_WAIT cancels its own put and leaves the association with one reference and N timewait sockets holding the same pointer. Closing the listener frees it, and the timewait timers then put freed memory. Rejecting the association on a listening socket is not sufficient: a socket can acquire one while established and then be turned back into a listener, because tcp_disconnect() leaves sk-&gt;psp_assoc in place. BUG: KASAN: slab-use-after-free in psp_twsk_assoc_free+0x6f/0xf0 Write of size 4 at addr ffff888110f9255c by task swapper/7/0 psp_twsk_assoc_free+0x6f/0xf0 inet_twsk_put+0xda/0x1b0 call_timer_fn+0x53/0x2e0 __run_timers+0x764/0xa80 Freed by task 99: kfree+0x1a7/0x500 process_one_work+0x7ec/0x1100 An association carries a per-connection SPI and key, so a child must not inherit the parent&apos;s. Clear it on clone.</description></item><item><title>CVE-2026-99117: net: bridge: mcast: don&apos;t truncate the port group walk on teardown</title><link>https://vulnfeed.org/cve/CVE-2026-99117/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99117/</guid><pubDate>Wed, 28 Oct 2026 11:17:31 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: net: bridge: mcast: don&apos;t truncate the port group walk on teardown __br_multicast_disable_port_ctx() and br_multicast_del_port() walk port-&gt;mglist with hlist_for_each_entry_safe(). However, br_multicast_find_del_pg() can also delete other entries from the same list through br_multicast_fwd_src_remove() or __fwd_del_star_excl(). If such an entry is the iterator&apos;s saved next node, hlist_del_init() clears its -&gt;next and terminates the walk early. The reproducer triggers this in both teardown walks, leaving port groups in the bridge mdb with a dangling -&gt;key.port after del_nbp() frees the port: BUG: KASAN: slab-use-after-free in __mdb_fill_info+0x1191/0x1320 __mdb_fill_info+0x1191/0x1320 br_mdb_dump+0x594/0xe40 rtnl_mdb_dump+0x1cf/0x5d0 Use hlist_del_init_rcu() to unlink the group while preserving -&gt;next. br_multicast_del_pg() and the teardown walks run under br-&gt;multicast_lock. The GC worker must acquire the same lock before detaching the group for destruction, so the node remains alive while the walk uses the preserved pointer. Preserving -&gt;next means a walk can now reach a group that an earlier iteration already deleted as a side effect. That group is off mp-&gt;ports, so br_multicast_find_del_pg() would fall through its port scan and hit the trailing WARN_ON(1). Skip such groups at the top of that helper: a port group is put on port-&gt;mglist when it is created and only unlinked when it is deleted, so hlist_unhashed() identifies exactly this case.</description></item><item><title>CVE-2026-99122: vsock/vmci: validate packet source for connected sockets</title><link>https://vulnfeed.org/cve/CVE-2026-99122/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99122/</guid><pubDate>Wed, 28 Oct 2026 11:17:31 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: vsock/vmci: validate packet source for connected sockets vmci_transport_recv_stream_cb() looks up sockets first by the full source and destination tuple, then by destination only in the bound table. The fallback can select a non-listening socket without checking whether the packet came from its stored peer. This was reproduced with two VMCI contexts. A RST from the context not stored in a TCP_SYN_SENT socket reset that socket after it was selected by the destination-only lookup. VMCI can process notification packets in bottom-half context when the socket is not owned by user context, or defer packets to a workqueue. Use vsock_check_source() after taking the socket lock in the bottom-half path, and recheck after lock_sock() in the workqueue path. Listening sockets continue to accept packets from any source. Reply with a RST addressed from the received packet before dropping a source that fails validation. This preserves the existing reset behavior for bound non-listening and concurrently closed sockets without directing the reset to a connected socket&apos;s stored peer.</description></item><item><title>CVE-2026-99123: vsock/virtio: validate packet source for connected sockets</title><link>https://vulnfeed.org/cve/CVE-2026-99123/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99123/</guid><pubDate>Wed, 28 Oct 2026 11:17:31 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: vsock/virtio: validate packet source for connected sockets virtio_transport_recv_pkt() looks up sockets first by the full source and destination tuple, then by destination only in the bound table. The fallback is needed for listening and connecting sockets, but sockets remain in the bound table after connect(), so it can also return a non-listening socket. The fallback does not validate the source address. In TCP_SYN_SENT, a RESPONSE from an unrelated source can transition the victim socket to TCP_ESTABLISHED while its stored remote address remains unchanged. Subsequent RW packets from that source are delivered through the same destination-only fallback. This was reproduced with capability-empty processes under different UIDs. The attacker discovered the target tuple through unprivileged AF_VSOCK sock_diag and caused the victim socket to read 16 attacker-chosen bytes; the intended peer-side socket read 0 of those 16 bytes. Add vsock_check_source() to validate the transport, source port and source CID against the peer stored in a non-listening socket. The local transport is the CID exception because its packets are generated internally with VMADDR_CID_LOCAL as their source, including connections using CID aliases. Use the helper after lock_sock() in the virtio receive path.</description></item><item><title>CVE-2026-99107: ntfs: fix incorrect MFT record pointer passed to ntfs_attr_record_resize</title><link>https://vulnfeed.org/cve/CVE-2026-99107/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99107/</guid><pubDate>Wed, 28 Oct 2026 11:17:30 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: ntfs: fix incorrect MFT record pointer passed to ntfs_attr_record_resize ntfs_new_attr_flags() passes the wrong MFT record to ntfs_attr_record_resize(). When the attribute is in an extent record, ctx-&gt;mrec points to the extent but the function receives the base record pointer m, causing incorrect size calculations in memmove. Fix by passing ctx-&gt;mrec (the actual MFT record containing the attribute) instead of m (the base MFT record) to ntfs_attr_record_resize().</description></item><item><title>CVE-2026-99109: smb: client: reject SetEA requests that do not fit the request buffer</title><link>https://vulnfeed.org/cve/CVE-2026-99109/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99109/</guid><pubDate>Wed, 28 Oct 2026 11:17:30 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: smb: client: reject SetEA requests that do not fit the request buffer CIFSSMBSetEA() copies the caller&apos;s extended attribute value into the SMB request buffer without checking that it fits. The requirement is stated in the source but was never implemented: /*BB add length check to see if it would fit in negotiated SMB buffer size BB */ /* if (ea_value_len &gt; buffer_size - 512 (enough for header)) */ if (ea_value_len) memcpy(parm_data-&gt;list.name + name_len + 1, ea_value, ea_value_len); The only bound applied on the way in is in cifs_xattr_set(): #define MAX_EA_VALUE_SIZE CIFSMaxBufSize ... if (size &gt; MAX_EA_VALUE_SIZE) CIFSMaxBufSize is the full payload capacity of the buffer, so a value of exactly that size leaves no room for the SMB header, the TRANS2 parameter block, the fealist header and the EA name that are written ahead of it in the same object. SendReceive() already enforces the correct limit on this very length: if (in_len &gt; CIFSMaxBufSize + MAX_CIFS_HDR_SIZE) but it is called after the copy has taken place. An unprivileged setxattr(2) on an SMB1 mount with a 250-byte name and a 16384-byte value writes 16384 bytes starting 345 bytes into a 16588-byte cifs_request object, ending 141 bytes past it: BUG: KASAN: slab-out-of-bounds in CIFSSMBSetEA+0xabc/0xde0 Write of size 16384 at addr ffff888003aa0159 by task init/68 __asan_memcpy+0x3c/0x60 CIFSSMBSetEA+0xabc/0xde0 cifs_xattr_set+0xd3a/0xff0 __vfs_setxattr+0x13e/0x1a0 The buggy address is located 345 bytes inside of allocated 16588-byte region Apply SendReceive()&apos;s limit to the assembled request before the copy rather than after it, and widen the byte counters so the sum cannot wrap before it is tested. byte_count is also tested against U16_MAX, because it is stored in the 16-bit pSMB-&gt;ByteCount. That becomes reachable when CIFSMaxBufSize is raised at module load, where it may be set as high as 1024*127: with a 5-byte EA name and a 65521-byte va…</description></item><item><title>CVE-2026-99110: smb: client: fix heap overflow in cifs_do_set_acl()</title><link>https://vulnfeed.org/cve/CVE-2026-99110/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99110/</guid><pubDate>Wed, 28 Oct 2026 11:17:30 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: smb: client: fix heap overflow in cifs_do_set_acl() cifs_set_acl() validates ACL size using posix_acl_xattr_size(): 4 + (count * 8) // 4-byte header + 8 bytes per ACE cifs_do_set_acl() then calls posix_acl_to_cifs() to write the CIFS wire format into the same buffer: 6 + (count * 10) // 6-byte header + 10 bytes per ACE An ACL that passes the xattr-based check in cifs_set_acl() can overflow the heap when posix_acl_to_cifs() writes the larger CIFS format. Validate the CIFS format size against the remaining buffer space and USHRT_MAX before converting--data_count is __u16, so sizes above USHRT_MAX truncate the on-wire packet length, causing the server to apply a partial ACL. Replace MaxDataCount = 1000 with min(CIFSMaxBufSize, USHRT_MAX).</description></item><item><title>CVE-2026-99112: net/sched: cls_flower: validate mask pointer after nla_next()</title><link>https://vulnfeed.org/cve/CVE-2026-99112/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99112/</guid><pubDate>Wed, 28 Oct 2026 11:17:30 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: net/sched: cls_flower: validate mask pointer after nla_next() fl_set_enc_opt() iterates the key&apos;s nested tunnel-option attributes with nla_for_each_attr() while advancing a single mask pointer via nla_next() at the bottom of each loop, so the mask cursor is driven by the number of key attributes rather than by the mask&apos;s own attributes. The nla_ok() added by commit c96adff956191 (&quot;cls_flower: call nla_ok() before nla_next()&quot;) only validates the mask pointer that was just consumed; the pointer produced by nla_next() is used by the next iteration (fl_set_geneve_opt() and siblings) without any validation. The mask&apos;s nested attributes are validated with NL_VALIDATE_LIBERAL, which merely warns on trailing bytes that do not form a complete attribute. A mask carrying one valid attribute plus 1-3 residue bytes (or a non-aligned attribute length making msk_depth negative) therefore reaches the next iteration with msk_depth != 0, so neither the !msk_depth check in fl_set_enc_opt() nor the !depth check in the per-type helpers fires. nla_type() then reads past the mask payload and nla_parse_nested_deprecated() iterates with an nla_len taken from those bytes, reading well beyond the mask attribute (KASAN: slab-out-of-bounds read in __nla_validate_parse from fl_change()). Validate the advanced mask pointer as well: when the mask is not legitimately exhausted (msk_depth != 0) and the new pointer fails nla_ok(), reject the filter with -EINVAL. An exactly exhausted mask still skips the check, preserving exact-match behaviour for the remaining key attributes.</description></item><item><title>CVE-2026-99216: Drivers: hv: Don&apos;t reset VMBus connection state on error/exit paths</title><link>https://vulnfeed.org/cve/CVE-2026-99216/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99216/</guid><pubDate>Wed, 28 Oct 2026 10:36:09 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: Drivers: hv: Don&apos;t reset VMBus connection state on error/exit paths In two places, current code forces vmbus_connection.conn_state to DISCONNECTED prior to calling vmbus_disconnect(). But vmbus_disconnect() calls vmbus_initiate_unload(), which unloads the VMBus connection only if the conn_state is CONNECTED. Consequently, the connection remains and the Hyper-V host might continue to send messages or post VMBus interrupts. The problem was introduced in commit 74347a99e73ae (&quot;x86/Hyper-V: Unload vmbus channel in hv panic callback&quot;), in that vmbus_initiate_unload() started checking the current connection state before doing the unload. This commit removed some occurrences where conn_state was forced to DISCONNECTED, but these two remained, apparently due to an oversight at the time. Fix this by not forcing conn_state to DISCONNECTED during VMBus exit, or if a failure occurs when establishing the connection in the first place. Whatever value conn_state has at the time is then read by vmbus_initiate_unload() to determine if there is a connection to be unloaded.</description></item><item><title>CVE-2026-99213: vsock: treat TCP_CLOSING as once-established</title><link>https://vulnfeed.org/cve/CVE-2026-99213/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99213/</guid><pubDate>Wed, 28 Oct 2026 10:36:06 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: vsock: treat TCP_CLOSING as once-established Handle the TCP_ESTABLISHED -&gt; TCP_CLOSING transition on OP_RST, which can race with the connect loop. Immediately break and return 0 on ESTABLISHED/CLOSING. The return value of connect() should reflect what happened up to the point the connection was established or failed. Events that occur afterwards must not affect it. E.g. even if OP_RW has already set sk_err, connect() should still return 0, not ENOBUFS because of it. Adapt the inaccurate comment above signal_pending(). Resetting a socket that is still present in connected_table can lead to memory corruption. The reporter noted lost transports for in-flight skbs, and I have reproduced crashes caused by re-insertion into connected_table. list_add double add: new=, prev=, next=. kernel BUG at lib/list_debug.c:35! Oops: invalid opcode: 0000 [#1] SMP KASAN NOPTI Workqueue: vsock-loopback vsock_loopback_work RIP: 0010:__list_add_valid_or_report+0x11f/0x130 Call Trace: vsock_insert_connected.cold+0xe/0x13 virtio_transport_recv_pkt+0x10e9/0x1460 vsock_loopback_work+0x305/0x480 process_one_work+0xe4c/0x1560 worker_thread+0x4f1/0xd60 kthread+0x36e/0x470 ret_from_fork+0x47b/0x6b0 ret_from_fork_asm+0x1a/0x30 This fix is supplementary to commit 002541ef650b (&quot;vsock: Ignore signal/timeout on connect() if already established&quot;). Details under Link.</description></item><item><title>CVE-2026-99212: net/rds: don&apos;t let the rdma_cm destroy an id RDS still owns on route failure</title><link>https://vulnfeed.org/cve/CVE-2026-99212/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99212/</guid><pubDate>Wed, 28 Oct 2026 10:36:05 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: net/rds: don&apos;t let the rdma_cm destroy an id RDS still owns on route failure rds_rdma_cm_event_handler_cmn() hands the return value of rdma_resolve_route() straight back to the rdma_cm on RDMA_CM_EVENT_ADDR_RESOLVED. A synchronous failure there - -ENOMEM from the route work allocation, an SA query that cannot be set up, a RoCE route with no usable device - makes addr_handler() destroy the id the event was delivered on. That id is ic-&gt;i_cm_id, and nothing clears the pointer: the connection sits in RDS_CONN_CONNECTING with a freed id until its shutdown calls rdma_disconnect() and rdma_destroy_id() on it. The ROUTE_RESOLVED case already avoids this: rds_ib_cm_initiate_connect() forces a zero return while ic-&gt;i_cm_id == cm_id, as the comment there explains. Do the same here - drop the connection and return 0 - so the id stays RDS&apos;s to destroy from the shutdown, and the reconnect gets a fresh one.</description></item><item><title>CVE-2026-99203: pipe: preserve existing fasync readers on writer setup failure</title><link>https://vulnfeed.org/cve/CVE-2026-99203/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99203/</guid><pubDate>Wed, 28 Oct 2026 10:35:57 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: pipe: preserve existing fasync readers on writer setup failure F_SETFL and FIOASYNC decide whether to invoke -&gt;fasync() before pipe_fasync() takes pipe-&gt;mutex. Two enables of one O_RDWR FIFO can therefore both enter the callback. fasync_helper() allocates before checking for an existing entry. If the first enable installs both entries, a second enable can update the reader entry and then fail the allocation for the writer entry. The error path removes the pre-existing reader entry, clearing FASYNC while the writer entry remains registered. __fput() then skips -&gt;fasync(), so a later pipe notification can dereference the freed file or its f_owner. An unprivileged memory-pressure reproducer triggers a KASAN slab-use-after-free in send_sigio() through this path. Keep the reader helper&apos;s result and undo the registration only if this call added it. The pipe mutex serializes changes to both lists, so a failed new registration still removes its reader, while a failed duplicate preserves the existing registrations and FASYNC. Successful duplicate enables continue to update fa_fd as before.</description></item><item><title>CVE-2026-46300: Linux Kernel Missing Initialization of a Variable Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2026-46300/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-46300/</guid><pubDate>Wed, 28 Oct 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains a missing initialization of a variable vulnerability that could allow for unintended modification of page-cache-backed data via failure to preserve the shared-fragment marker during socket buffer coalescing, causing ESP input processing to decrypt shared fragments in place. This vulnerability can be chained with CVE-2026-109618 and CVE-2026-109619 to implant PHP webshells and run commands as root.</description></item><item><title>CVE-2026-99094: Bluetooth: btintel_pcie: fix TX descriptor bounds check</title><link>https://vulnfeed.org/cve/CVE-2026-99094/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99094/</guid><pubDate>Mon, 26 Oct 2026 15:16:48 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: Bluetooth: btintel_pcie: fix TX descriptor bounds check btintel_pcie_prepare_tx() uses tfd_index to access the TFD and data buffer arrays before the index is advanced modulo txq-&gt;count. An index equal to txq-&gt;count is one past the end of both arrays, so reject it in the bounds check.</description></item><item><title>CVE-2026-99099: x86/CPU/AMD: Fix AMD TLBI Erratum #1718</title><link>https://vulnfeed.org/cve/CVE-2026-99099/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-99099/</guid><pubDate>Mon, 26 Oct 2026 15:16:48 +0000</pubDate><description>In the Linux kernel, the following vulnerability has been resolved: x86/CPU/AMD: Fix AMD TLBI Erratum #1718 The processor may fail to invalidate a TLB entry while executing an INVLPGB/TLBSYNC instruction pair. Detect the erratum and apply a software workaround when a microcode fix is not present.</description></item><item><title>CVE-2026-53266: Linux Kernel Out-of-Bounds Write Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2026-53266/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-53266/</guid><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains an out-of-bounds write vulnerability in the ebtables SNAT target which allows an ARP sender hardware address rewrite to write directly into a nonlinear socket-buffer fragment backed by a splice-imported file page. The impacted product(s) could be end-of-life (EoL) and/or end-of-service (EoS). Users are advised to discontinue use and/or transition to a supported version.</description></item><item><title>CVE-2025-39964: Linux Kernel Race Condition Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2025-39964/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2025-39964/</guid><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains a race condition vulnerability which allows concurrent writes to the same AF_ALG socket causing data to be unpredictably interleaved and creating inconsistencies in the socket&apos;s internal state.</description></item><item><title>CVE-2025-39682: Linux Kernel Improper Check for Unusual or Exceptional Conditions Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2025-39682/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2025-39682/</guid><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains an improper check for unusual or exceptional conditions vulnerability in the TLS receive path which allows a zero-length record retrieved from the rx_list to bypass the intended recvmsg() record-type handling, potentially causing subsequent TLS records to be processed using incorrect zero-copy and queuing assumptions. The impacted product(s) could be end-of-life (EoL) and/or end-of-service (EoS). Users are advised to discontinue use and/or transition to a supported version.</description></item><item><title>CVE-2026-53362: Linux Kernel Unspecified Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2026-53362/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2026-53362/</guid><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains an unspecified vulnerability that can allow for privilege escalation via IPv6 networking subsystem. This vulnerability can impact multiple products, including but not limited to Suse, Red Hat, and other products using Linux.</description></item><item><title>CVE-2022-0995: Linux Kernel Out-of-Bounds Write Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2022-0995/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2022-0995/</guid><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains an out-of-bounds memory write vulnerability which could allow a local user to gain privileged access or cause a denial of service on the system.</description></item><item><title>CVE-2022-0492: Linux Kernel Improper Authentication Vulnerability</title><link>https://vulnfeed.org/cve/CVE-2022-0492/</link><guid isPermaLink="true">https://vulnfeed.org/cve/CVE-2022-0492/</guid><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><description>Linux Kernel contains an improper authentication vulnerability which could allow for privilege escalation via the cgroups v1 release_agent feature.</description></item></channel></rss>
