Linux kernel vulnerabilities
10,418 known CVE vulnerabilities in Linux kernel, translated and rated.
- CVE-2026-98031Low risk· EPSS 6%
A vulnerability in the Linux kernel nexthop subsystem regarding uninitialized extack in remove_nh_grp_entry() was fixed. The function prints an extack message when a listener fails to replace the reduced nexthop group, but extack is not initialized, leading to dereference of an uninitialized stack pointer.
- CVE-2026-98030High
A vulnerability in the Linux kernel DSA bcm_sf2 driver regarding unbounded CFP rule dump by caller's buffer size was fixed. The function bcm_sf2_cfp_rule_get_all() walks the whole cfp.unique bitmap without consulting nfc->rule_cnt, allowing out-of-bounds access. The flaw is reachable without CAP_NET_ADMIN.
- CVE-2026-98029High
In the Linux kernel, the nfp ethernet driver dumps ntuple rules into a caller-provided buffer without checking its size. nfp_net_get_fs_loc() writes every entry of nn->fs.list into rule_locs[] while ignoring cmd->rule_cnt, so a user without CAP_NET_ADMIN can call ETHTOOL_GRXCLSRLALL with fewer slots than there are rules and run past the allocation; a rule_cnt of 0 leaves a NULL pointer that gets dereferenced.
- CVE-2026-98028Low risk· EPSS 6%
In the Linux kernel, the nfp ethernet driver fails to drop a replaced rule from the list when reprogramming fails. nfp_net_fs_add() deletes the old rule from hardware and decrements nn->fs.count, but if nfp_net_fs_add_hw() fails the old entry stays on nn->fs.list, so the list is one longer than the counter and still advertises a rule whose hardware entry was already torn down.
- CVE-2026-98027High
In the Linux kernel, the DSA mv88e6xxx driver dumps policy rules into a caller-provided buffer without checking its size. mv88e6xxx_get_rxnfc() uses rxnfc->rule_cnt as the write index, clobbering the input value that indicates how many slots the caller had room for, so a user without CAP_NET_ADMIN can call ETHTOOL_GRXCLSRLALL with fewer slots than there are rules and run past the allocation; a rule_cnt of 0 leaves a NULL pointer that gets dereferenced.
- CVE-2026-98026Low risk· EPSS 6%
In the Linux kernel, the bridge multicast code improperly converts mglist to RCU. br_multicast_del_port_group unlists the port group without the proper RCU helper that preserves the next pointer and then immediately frees the port group without waiting for an RCU grace period; the only RCU walker of mglist, br_multicast_list_adjacent(), has always been buggy because mglist was never properly converted to RCU.
- CVE-2026-98025Low risk· EPSS 13%
A heap overflow vulnerability was found in the Linux kernel's cx82310_eth USB driver. When a device sends a URB starting with the 0xffff reboot sentinel, the driver bypasses the MTU check and copies up to 4094 bytes of device-supplied data into a 1516-byte buffer, corrupting memory and delivering a malformed frame to the network stack.
- CVE-2026-98024Low risk· EPSS 6%
In the Linux kernel, the s390/ism driver frees memory with the wrong function after an error. dmb->cpu_addr was allocated via folio_alloc(), but the error exit of ism_alloc_dmb() uses kfree() instead of folio_put(), which can corrupt the slab allocator; dmb->cpu_addr should also be reset after folio_put to avoid future use-after-free.
- CVE-2026-98023High
A vulnerability in the Linux kernel's VXLAN driver allows dynamic FDB entries to reference a nexthop ID, which is invalid and can lead to list corruption, race conditions, and use-after-free. The fix rejects such entries during creation and update.
- CVE-2026-98022Low risk· EPSS 7%
In the Linux kernel, an unbounded tx_queue_len allowed an unprivileged user (via unshare -Urn) to set a huge value and exhaust global memory through ring buffer allocations in the pfifo_fast, tun, and tap subsystems. The vulnerability was fixed by capping tx_queue_len at S16_MAX (32767) in netif_change_tx_queue_len(), rejecting oversized values at set time.
- CVE-2026-98021Low risk· EPSS 7%
A vulnerability was found in the Linux kernel's network interface creation and modification mechanism. The IFLA_TXQLEN attribute (txqueuelen) was not properly limited to S16_MAX during netlink parsing, allowing an oversized transmit queue length to be set. This led to excessive memory allocations in pfifo_fast, tun, and tap modules, which could be exploited by an unprivileged user in a namespace.
- CVE-2026-98020Low risk· EPSS 6%
In the Linux kernel, the pds_core driver has a cmd_regs access race during BAR unmap on reset. pdsc_reset_prepare() and the pdsc_map_bars() error path in pdsc_reset_done() clear/iounmap cmd_regs without devcmd_lock, and the download loop in pdsc_legacy_firmware_update() dereferences cmd_regs after dropping and retaking the lock without re-checking; an FLR concurrent with a devlink flash can unmap cmd_regs under an in-flight devcmd, causing a NULL deref or a write to unmapped MMIO.
- CVE-2026-98019Low risk· EPSS 5%
In the Linux kernel, the BPF verifier failed to mark the underlying scalar register as precise in two cases: when a helper argument is NULL (check_func_arg) and when the second parameter of bpf_get_local_storage() is zero (check_helper_call). As a result, a checkpoint created on such a path could be pruned against an arbitrary scalar value, leading to incorrect BPF program verification.
- CVE-2026-98018Low risk· EPSS 6%
In the Linux kernel, mctp_i3c_probe() dropped busdevs_lock after finding the matching bus, allowing a concurrent I3C_NOTIFY_BUS_REMOVE to unregister and free the bus netdev before probe passed its private data to mctp_i3c_add_device(). This resulted in a use-after-free through the freed mbus pointer.
- CVE-2026-98017High
In the Linux kernel, an RTM_NEWQDISC request could make clsact bind a populated shared ingress block during ->init(), publishing an embedded mini_Qdisc to lockless readers. If the same request had an invalid TCA_RATE, estimator setup failed after ->init(), and the unwind synchronously freed the containing qdisc while tc_run() might still hold it, leading to a use-after-free.
- CVE-2026-98016Low risk· EPSS 6%
In the Linux kernel, the net/mlx5e driver's sample_restore_put() could re-read restore->count after dropping restore_lock during concurrent teardown of TC sample rules sharing the same restore context. At that point another thread may have already completed cleanup and freed the restore object, leading to a use-after-free.
- CVE-2026-98015Low risk· EPSS 7%
In the Linux kernel, mlx5_eswitch_termtbl_put() read tt->ref_count after termtbl_mutex was released. Two concurrent callers on the same mlx5_termtbl_handle raced: one decremented ref_count to zero, removed the hash entry, and called kfree(tt), while the other had already dropped the mutex and was about to evaluate if (!tt->ref_count), producing a use-after-free.
- CVE-2026-98013Low risk· EPSS 7%
In the Linux kernel, fq_pie_change() accepted any quantum value from userspace, including 1. With a crafted size table qdisc_pkt_len reached ~2 GiB, so quantum=1 made the deficit-refill loop spin ~2^31 times under the qdisc lock, causing a soft lockup and denial of service.
- CVE-2026-98012Low risk· EPSS 7%
In the Linux kernel, sfq_change() accepted any non-negative quantum (only rejecting (int)ctl->quantum < 0). With a crafted size table qdisc_pkt_len reached ~2 GiB, so quantum=1 made the deficit-refill loop spin ~2^31 times under the qdisc lock, causing a soft lockup and denial of service.
- CVE-2026-98011Low risk· EPSS 7%
In the Linux kernel, hhf_change() accepted any quantum value from userspace, including 1. With a crafted size table qdisc_pkt_len reached ~2 GiB, so quantum=1 made the deficit-refill loop spin ~2^31 times under the qdisc lock, causing a soft lockup and denial of service.
- CVE-2026-98010Low risk· EPSS 7%
In the Linux kernel, drr_change_class() rejected explicit quantum==0 but otherwise fell back to psched_mtu() with no floor. With a crafted size table qdisc_pkt_len reached ~2 GiB, so quantum=1 (or a zero psched_mtu on a headerless device) made the deficit-refill loop spin under the qdisc lock, causing a soft lockup and denial of service.
- CVE-2026-98009Low risk· EPSS 7%
In the Linux kernel, the ets network scheduler lacked a lower bound on the quantum value. With a crafted size table qdisc_pkt_len can reach ~2 GiB, and a zero psched_mtu on a headerless device makes the deficit-refill loop spin under the qdisc lock. The fix moves the floor into ets_quantum_parse() so explicitly configured quanta are also clamped to [256, 1<<20].
- CVE-2026-98008Low risk· EPSS 6%
In the Linux kernel macb driver, when the device tree describes a fixed-link and has no "mdio" child node, macb_mii_init() returns early without allocating the MDIO bus, leaving bp->mii_bus as NULL. Two cleanup paths (driver unbind and probe error path) call mdiobus_unregister()/mdiobus_free() without a NULL check, causing an oops. The fix adds NULL guards in both places.
- CVE-2026-98007Low risk· EPSS 6%
In the Linux kernel BPF subsystem, bpf_loop() declares its nr_loops argument as ARG_ANYTHING, allowing privileged programs to pass pointer values. Since commit bb124da69c47 the verifier marks R1 precise and reads its upper bound, but precision backtracking only accepts scalar registers, triggering a "backtracking misuse" warning and a panic when panic_on_warn is enabled. The fix introduces ARG_SCALAR and uses it for nr_loops.
- CVE-2026-98005Low risk· EPSS 4%
In the Linux kernel erofs filesystem, inode_share keys were encoded as fingerprint || domain_id without a separator, which could cause the fingerprint to be parsed as part of a domain ID. The fix changes the encoding to domain_id || '\0' || fingerprint, making in-memory key indices unambiguous.
- CVE-2026-98004Low risk· EPSS 5%
In the Linux kernel iommu/riscv driver, command queue publishing was not serialized, potentially causing a race between producer state and hardware tail updates. The fix serializes publishing so software producer state advances only after a command is written and the hardware tail is updated, and waits for hardware consumption outside the queue lock when the queue is full.
- CVE-2026-98003Low risk· EPSS 5%
In the Linux kernel iommu/amd driver, iommu_init_ga_log() unconditionally assigns the ga_log and ga_log_tail pointers, so each resume replaces the boot-time pointers and leaks both allocations. The function also uses GFP_KERNEL from a syscore resume callback, where interrupts are disabled and non-boot CPUs are offline. The fix returns early if both buffers are already allocated and clears the pointers in free_ga_log().
- CVE-2026-98002High
In the Linux kernel iommu/amd driver, amd_iommu_pdom_id_alloc() returns an int (domain ID or negative errno), but amd_iommu_alloc_domain_nested() stores the result in the u32 field gdom_info->hdom_id, discarding the sign. As a result, -ENOSPC becomes 0xffffffe4 and the "<= 0" test never fires, so the nested domain is set up with an unallocated ID. The fix keeps the value in an int, tests it, and stores it only after validation.
- CVE-2026-98001Low risk· EPSS 6%
In the Linux kernel hwmon ltc4282 driver, ltc428_clk_provider_setup() does not initialize all members of the clk_init_data structure, in particular init.num_parents remains uninitialized despite being assumed NULL. With CONFIG_INIT_STACK_ALL_PATTERN or CONFIG_INIT_STACK_NONE enabled, this may cause a crash. The fix ensures all members are fully initialized.
- CVE-2026-98000Low risk· EPSS 5%
In the Linux kernel pec_store() takes a guard(mutex)(&hwdev->lock). If the chip write operation returns an error other than -EOPNOTSUPP, the code jumps to the put label, which calls put_device(hdev); if this drops the final reference, the device is freed, and when the function returns the guard cleanup attempts to unlock the freed mutex (UAF). The fix uses scoped_guard() instead of guard().
- CVE-2026-97998Low risk· EPSS 11%
In the Linux kernel, the netfilter nfnetlink_log module has a bug related to concurrent instance destruction. Unlinking an instance from the hashes can occur at any refcount, not only on the 1 to 0 transition. Uncooperative userspace can force a situation where a queue is pending destruction from a netlink event while a different socket with the same portid processes an UNBIND request, leading to the instance being unhashed again and a general protection fault.
- CVE-2026-97997Low risk· EPSS 5%
In the Linux kernel, the virtio_ring packed ring handling leaves stale AVAIL and USED descriptor flags after a failed packed add. These descriptors can be misinterpreted by the device as another command entry, blocking the virtqueue. This typically occurs in swiotlb configurations under memory pressure when vring_map_one_sg() fails for larger I/O requests.
- CVE-2026-97996Low risk· EPSS 6%
A use-after-free vulnerability exists in the Linux kernel's unregister_virtio_device() function. After device_unregister() is called, the memory holding the virtio_device object may be freed, and virtio_debug_device_exit() then reads the debugfs_dir field from that freed object. The affected transports are virtio_mmio, virtio_vdpa, virtio_uml, mlxbf-tmfifo, and virtio_ccw.
- CVE-2026-97995Low risk· EPSS 7%
In the Linux kernel, the virtio_console module has a bug where control-out buffers are freed on device removal. __send_control_msg() publishes &portdev->cpkt as the control-out virtqueue cookie, and remove_vqs() passes leftover cookies to free_buf(), which treats them as struct port_buffer and reads sgpages. If a control message is still on c_ovq when the device is unbound, free_buf() reads past the ports_device object, reported by KASAN as slab-out-of-bounds.
- CVE-2026-97994Low risk· EPSS 9%
In the Linux kernel, the vhost/vdpa module has a bug where a queue size VRING_NUM larger than the device maximum is accepted. vhost_vring_set_num() accepts any non-zero power-of-two queue size fitting in 16 bits, and vhost-vdpa passes that value to set_vq_num() without comparing it with get_vq_num_max(). A process with access to /dev/vhost-vdpa-* can configure a queue larger than the device advertises, leading to an out-of-bounds read in the vringh IOTLB path (KASAN reports a 16-byte out-of-bounds read).
- CVE-2026-97993Low risk· EPSS 11%
In the Linux kernel, the vhost-vdpa module has a bug where the eventfd_ctx_fdget() error is installed in config_ctx. vhost_vdpa_set_config_call() swaps the eventfd_ctx_fdget() return value into v->config_ctx before checking it, so on failure the field briefly holds an ERR_PTR. vhost_vdpa_config_cb() only tests for NULL, so a config interrupt delivered inside that window hands the ERR_PTR to eventfd_signal(). Additionally, a rejected fd can tear down a working config interrupt.
- CVE-2026-97992Low risk· EPSS 9%
A use-after-free vulnerability exists in the Linux kernel's vhost-vdpa mechanism. The vhost_vdpa_config_cb() function reads the v->config_ctx pointer without a lock or reference, while a concurrent VHOST_VDPA_SET_CONFIG_CALL ioctl frees the old eventfd context via eventfd_ctx_put(), leading to use of freed memory. The issue is reachable from userspace when using VDUSE (access to /dev/vduse, root by default).
- CVE-2026-97991High
In the Linux kernel, the vdpa_sim_blk module has a bug where out-of-range sector starts are accepted. vdpasim_blk_check_range() logs an invalid start sector but continues validating the request; the subsequent unsigned capacity subtraction can underflow and let an out-of-range buffer offset reach the data path. This leads to an out-of-bounds write (VIRTIO_BLK_T_OUT, VIRTIO_BLK_T_WRITE_ZEROES) or out-of-bounds read (VIRTIO_BLK_T_IN).
- CVE-2026-97990High
In the Linux kernel, the vdpa_sim_net module has a bug where the TX pull result is not checked before the RX copy. vringh_iov_pull_iotlb() returns a signed byte count; a failed TX pull is currently added to the unsigned byte counter and then passed as a size_t length to receive_filter() and vringh_iov_push_iotlb(). A negative error can therefore become a large length in the RX path.
- CVE-2026-97989Low risk· EPSS 5%
In the Linux kernel, the vduse module has a bug where virtqueue alignment is not validated. vduse_validate_config() only checks the upper bound of vq_align, so invalid values can reach vring_create_virtqueue_map(). The split-ring helpers use align - 1 as a bit mask, so the alignment must be a non-zero power of two; a zero value makes vring_size() drop the descriptor and available-ring part and vring_init() leave the used ring pointer NULL. Opening a virtio-net device created with vq_align=0 triggers a null-ptr-deref in virtqueue_kick_prepare_split().
- CVE-2026-97988Low risk· EPSS 5%
In the Linux kernel, the vhost subsystem has an issue with invalidating vring access on IOTLB transitions. When VIRTIO_F_ACCESS_PLATFORM changes, cached vring pointers and IOTLB metadata are interpreted in a different address space, potentially leaving stale ring mappings in use. A common vhost_clear_device_iotlb() helper was added to serialize the transition with workers and prevent mixed address space mappings.
- CVE-2026-97987Low risk· EPSS 6%
In the Linux kernel, the virtio_input driver has a flaw in the error path of input device registration. Probe marks the device DRIVER_OK before calling input_register_device(); if registration fails, the error path clears vi->ready and calls del_vqs() while the device is still live, potentially causing DMA to already torn-down queues. The fix calls virtio_reset_device() before tearing down the virtqueues.
- CVE-2026-97986Low risk· EPSS 6%
In the Linux kernel, the virtio_input driver has an ordering issue during device removal. virtinput_remove() unregisters the input device before resetting the virtio device, allowing a callback to use vi->idev after it is freed. The fix resets the device first and rechecks vi->ready after taking the lock.
- CVE-2026-97985Low risk· EPSS 6%
In the Linux kernel, the AF_UNIX subsystem has a bug in manage_oob() that fails to update the last skb marker. As a result, a blocking recv(MSG_PEEK) call can hog CPU by busy-waiting for a new skb. The fix updates the @last marker in manage_oob().
- CVE-2026-97984Low risk· EPSS 6%
The Linux kernel has a UDP length overflow when sending large packets over IPv6 UDP sockets with IPV6_MTU_DISCOVER set to IPV6_PMTUDISC_DO or IPV6_PMTUDISC_PROBE and a network device with an unusually large MTU. The cork->base.fragsize value is not bounded to IP6_MAX_MTU, causing the 16-bit UDP length field to overflow and triggering a WARN in udp_set_len_short. The issue affects UDP sockets only and was fixed by limiting fragsize to IP6_MAX_MTU.
- CVE-2026-97983Low risk· EPSS 4%
In the Linux kernel, the vduse module has a bug in compat ioctl handling. The compat handler handles VDUSE_IOTLB_GET_FD and VDUSE_VQ_GET_INFO but then calls the native handler, which returns -ENOIOCTLCMD due to different command sizes. For GET_FD, this overwrites receive_fd()'s return value after the descriptor is installed, leaking one fd per call. The fix returns handled compat results directly.
- CVE-2026-97982Low risk· EPSS 7%
In the Linux kernel, the cortina ethernet driver has a bug in NAPI budget accounting. The gmac_rx() function returns the remaining NAPI budget, but its caller treats the return value as the number of packets received. An idle poll therefore reports a full budget and remains scheduled. The fix returns the number of received packets instead.
- CVE-2026-97981Low risk· EPSS 7%
In the Linux kernel, the cortina ethernet driver has a bug in NAPI budget accounting for dropped frames. The RX loop only consumes budget when it successfully delivers a frame; error paths keep consuming descriptors without reducing the budget, potentially processing the entire receive ring in one poll. The fix moves budget accounting to a common end-of-frame path.
- CVE-2026-97980Low risk· EPSS 4%
In the Linux kernel, the s390/debug subsystem has a NULL pointer dereference in debug_set_level(). Commit a2cec6863709 removed a null-id check from debug_set_level(), introducing a possible NULL pointer dereference for debug-API users that put debug_register() results unchecked into debug_set_level(). The fix moves the check back to the external wrapper.
- CVE-2026-97979Low risk· EPSS 6%
A memory leak was found in the Linux kernel's Intel ICE network driver. The missing xa_destroy call for the sched_node_ids structure can cause memory leaks even after all elements are removed. The fix moves the structure to the hw struct and adds proper cleanup.
Vulnerability data from NVD (NIST) · CISA KEV · EPSS

