Cloudanix VulnDB

CVE-2026-46031

High · 7.5

CVSS

7.5

EPSS

0.4%

Published

May 27, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

Some Linux-based devices using a specific Ethernet chip can be forced into a network-related hang, potentially causing an outage until they are fixed or restarted.

Exploitation
Remote Unauthenticated
Attacker needs
None
Complexity
Moderate
Impact
Denial Of Service
Component
OS kernel
Class
Race Condition
Remediation
Patch
Effort
Low
Patch risk
Low

What it actually does

This is a Linux kernel race/deadlock flaw in the ks8851 Ethernet driver. Under specific interrupt and softirq timing, the driver can re-enter transmit handling while a ks8851 driver lock is already held, causing a kernel deadlock in the network transmit path. The practical impact is availability loss: the affected network interface, kernel thread, or in some systems the whole host can hang or become unstable. Systems using the ks8851 Ethernet controller are the relevant exposure; systems without this driver/device are not meaningfully affected.

Why it matters to the business

Successful exploitation can interrupt network connectivity or cause denial of service on affected Linux systems, which is most relevant for embedded, industrial, appliance, IoT, and real-time Linux deployments that use ks8851 Ethernet hardware. Although this issue is not currently listed in CISA KEV, is not known to be used in ransomware campaigns, and has a low EPSS score, it can still create operational outages where affected devices provide network-facing services or control-plane connectivity.

How an attack unfolds

An attacker needs network reachability to an interface backed by the vulnerable ks8851 driver. By sending traffic that causes receive processing while the device is also transmitting, the attacker can influence the timing of interrupt handling and network softirq processing. In the vulnerable code path, ks8851_irq() holds the driver lock and then packet allocation or bottom-half re-enable behavior can trigger pending transmit softirq processing. That softirq can call ks8851_start_xmit_par(), which attempts to acquire the same lock already held by the IRQ handler. The result is a deadlock, producing kernel stack traces involving ks8851_irq(), net_tx_action(), and ks8851_start_xmit_par(), and causing network or system availability degradation until recovery, watchdog intervention, interface reset, or reboot.

How to fix it

Upgrade to a Linux kernel or vendor kernel package that includes the ks8851 fix for disabling bottom halves around the IRQ handler and related critical sections. Because no exact fixed package versions were provided, use the latest stable kernel from the operating system, appliance, or board vendor and confirm the vendor advisory includes the ks8851 deadlock fix. If immediate patching is not possible, reduce exposure by disabling unused ks8851-backed interfaces, unloading or blacklisting the ks8851 driver where feasible, placing affected devices on trusted or isolated networks, rate-limiting untrusted traffic to affected interfaces, and planning maintenance windows for reboot recovery if the device hangs. CONFIG_PREEMPT_RT systems should be prioritized, but non-RT kernels may also be affected according to the upstream description.

How to confirm the fix worked

Confirm whether the system uses ks8851 hardware or has the ks8851 driver loaded or built into the kernel. Check kernel configuration and modules for ks8851 support, and inspect boot logs for ks8851 device initialization. Validate remediation by confirming the running kernel package version is at or above the vendor-fixed release or contains the upstream patch titled "net: ks8851: Reinstate disabling of BHs around IRQ handler." After updating, reboot into the fixed kernel and verify the active kernel with uname or package-manager tooling. For operational validation, monitor dmesg, journald, and kernel logs during normal network traffic for absence of recurring ks8851 deadlock, soft lockup, hung task, or net_tx_action stack traces.

Typical attack path

  1. Identify or reach a Linux system or embedded device using a ks8851 Ethernet interface.
  2. Send network traffic to the affected interface, typically enough to exercise receive handling while the device also has outbound transmit activity.
  3. Trigger the vulnerable interrupt/softirq timing window in the ks8851 driver.
  4. Cause ks8851_start_xmit_par() to attempt to acquire a lock already held by ks8851_irq().
  5. Induce a kernel deadlock or networking hang, resulting in denial of service.

How to detect it

There is no known exploit-specific payload or reliable network IOC for this issue. Retrospective detection should focus on kernel and system logs showing ks8851 driver deadlocks, softirq-related stack traces, hung tasks, network watchdog events, interface resets, or unexplained device hangs following inbound network traffic. Review dmesg, journalctl kernel logs, /var/log/kern.log, /var/log/messages, persistent crash logs, pstore/ramoops, netconsole output, and appliance crash bundles. Look for stack traces containing ks8851_irq(), ks8851_start_xmit_par(), net_tx_action(), handle_softirqs(), __local_bh_enable_ip(), or rt_spin_lock(). Correlate these events with spikes in traffic to the affected interface, service unavailability, watchdog reboots, or manual power cycles. Because exploitation results in denial of service rather than code execution, absence of file, process, or account artifacts does not rule out attempted exploitation.

  • ks8851_irq
  • ks8851_start_xmit_par
  • net_tx_action
  • handle_softirqs
  • __local_bh_enable_ip
  • __netdev_alloc_skb
  • netdev_alloc_skb_ip_align
  • rt_spin_lock
  • schedule_rtlock
  • rtlock_slowlock_locked
  • sch_direct_xmit
  • dev_hard_start_xmit
  • netdev_start_xmit
  • qdisc_run
  • __qdisc_run
  • irq_thread_fn
  • irq_thread
  • NETDEV WATCHDOG
  • soft lockup
  • hung task
  • blocked for more than
  • ks8851

What your security team should do

  • Inventory Linux systems, appliances, and embedded devices that use the ks8851 Ethernet controller or load ks8851-related kernel drivers.
  • Prioritize patching internet-reachable, operationally critical, embedded, industrial, appliance, and CONFIG_PREEMPT_RT systems using affected kernels.
  • Apply the vendor-provided fixed kernel or a kernel containing the upstream ks8851 bottom-half/IRQ-handler fix, then reboot into the fixed kernel.
  • Where patching is delayed, isolate affected interfaces from untrusted networks and consider rate limits or access controls for traffic reaching those interfaces.
  • Add monitoring for kernel log signatures associated with ks8851 deadlocks and softirq transmit stack traces.
  • Prepare operational recovery procedures for affected devices, including safe interface reset or reboot steps, because exploitation primarily causes denial of service.
  • Track vendor advisories for exact fixed versions, since downstream Linux distributions and embedded vendors may backport the fix without changing to a new upstream kernel version.

The record

In the Linux kernel, the following vulnerability has been resolved: net: ks8851: Reinstate disabling of BHs around IRQ handler If the driver executes ks8851_irq() AND a TX packet has been sent, then the driver enables TX queue via netif_wake_queue() which schedules TX softirq to queue packets for this device. If CONFIG_PREEMPT_RT=y is set AND a packet has also been received by the MAC, then ks8851_rx_pkts() calls netdev_alloc_skb_ip_align() to allocate SKBs for the received packets. If netdev_alloc_skb_ip_align() is called with BH enabled, then local_bh_enable() at the end of netdev_alloc_skb_ip_align() will trigger the pending softirq processing, which may ultimately call the .xmit callback ks8851_start_xmit_par(). The ks8851_start_xmit_par() will try to lock struct ks8851_net_par .lock spinlock, which is already locked by ks8851_irq() from which ks8851_start_xmit_par() was called. This leads to a deadlock, which is reported by the kernel, including a trace listed below. If CONFIG_PREEMPT_RT is not set, then since commit 0913ec336a6c0 ("net: ks8851: Fix deadlock with the SPI chip variant") the deadlock can also be triggered without received packet in the RX FIFO. The pending softirqs will be processed on return from spin_unlock_bh(&ks->statelock) in ks8851_irq(), which triggers the deadlock as well. Fix the problem by disabling BH around critical sections, including the IRQ handler, thus preventing the net_tx_action() softirq from triggering during these critical sections. The net_tx_action() softirq is triggered once BH are re-enabled and at the end of the IRQ handler, once all the other IRQ handler actions have been completed. __schedule from schedule_rtlock+0x1c/0x34 schedule_rtlock from rtlock_slowlock_locked+0x548/0x904 rtlock_slowlock_locked from rt_spin_lock+0x60/0x9c rt_spin_lock from ks8851_start_xmit_par+0x74/0x1a8 ks8851_start_xmit_par from netdev_start_xmit+0x20/0x44 netdev_start_xmit from dev_hard_start_xmit+0xd0/0x188 dev_hard_start_xmit from sch_direct_xmit+0xb8/0x25c sch_direct_xmit from __qdisc_run+0x1f8/0x4ec __qdisc_run from qdisc_run+0x1c/0x28 qdisc_run from net_tx_action+0x1f0/0x268 net_tx_action from handle_softirqs+0x1a4/0x270 handle_softirqs from __local_bh_enable_ip+0xcc/0xe0 __local_bh_enable_ip from __alloc_skb+0xd8/0x128 __alloc_skb from __netdev_alloc_skb+0x3c/0x19c __netdev_alloc_skb from ks8851_irq+0x388/0x4d4 ks8851_irq from irq_thread_fn+0x24/0x64 irq_thread_fn from irq_thread+0x178/0x28c irq_thread from kthread+0x12c/0x138 kthread from ret_from_fork+0x14/0x28

Affected packages

Ecosystem Package Introduced Fixed
openSUSE:Tumbleweed kernel-source 0 7.0.11-1.1

Related vulnerabilities