Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2024-35971— net: ks8851: Handle softirqs at the end of IRQ thread to fix hang

CVSS 7.5 · High EPSS 0.69% · P49

Possible ATT&CK Techniques 1AI

T1059 · Command and Scripting Interpreter

Affected Version Matrix 10

VendorProductVersion RangeStatus
LinuxLinux797047f875b5463719cc70ba213eb691d453c946< 492337a4fbd1421b42df684ee9b34be2a2722540affected
797047f875b5463719cc70ba213eb691d453c946< cba376eb036c2c20077b41d47b317d8218fe754faffected
797047f875b5463719cc70ba213eb691d453c946< 49d5d70538b6b8f2a3f8f1ac30c1f921d4a0929baffected
797047f875b5463719cc70ba213eb691d453c946< be0384bf599cf1eb8d337517feeb732d71f75a6faffected
5.8affected
< 5.8unaffected
6.1.87≤ 6.1.*unaffected
6.6.28≤ 6.6.*unaffected
… +2 more rows
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-35971

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
net: ks8851: Handle softirqs at the end of IRQ thread to fix hang
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: net: ks8851: Handle softirqs at the end of IRQ thread to fix hang The ks8851_irq() thread may call ks8851_rx_pkts() in case there are any packets in the MAC FIFO, which calls netif_rx(). This netif_rx() implementation is guarded by local_bh_disable() and local_bh_enable(). The local_bh_enable() may call do_softirq() to run softirqs in case any are pending. One of the softirqs is net_rx_action, which ultimately reaches the driver .start_xmit callback. If that happens, the system hangs. The entire call chain is below: ks8851_start_xmit_par from netdev_start_xmit netdev_start_xmit from dev_hard_start_xmit dev_hard_start_xmit from sch_direct_xmit sch_direct_xmit from __dev_queue_xmit __dev_queue_xmit from __neigh_update __neigh_update from neigh_update neigh_update from arp_process.constprop.0 arp_process.constprop.0 from __netif_receive_skb_one_core __netif_receive_skb_one_core from process_backlog process_backlog from __napi_poll.constprop.0 __napi_poll.constprop.0 from net_rx_action net_rx_action from __do_softirq __do_softirq from call_with_stack call_with_stack from do_softirq do_softirq from __local_bh_enable_ip __local_bh_enable_ip from netif_rx netif_rx from ks8851_irq ks8851_irq from irq_thread_fn irq_thread_fn from irq_thread irq_thread from kthread kthread from ret_from_fork The hang happens because ks8851_irq() first locks a spinlock in ks8851_par.c ks8851_lock_par() spin_lock_irqsave(&ksp->lock, ...) and with that spinlock locked, calls netif_rx(). Once the execution reaches ks8851_start_xmit_par(), it calls ks8851_lock_par() again which attempts to claim the already locked spinlock again, and the hang happens. Move the do_softirq() call outside of the spinlock protected section of ks8851_irq() by disabling BHs around the entire spinlock protected section of ks8851_irq() handler. Place local_bh_enable() outside of the spinlock protected section, so that it can trigger do_softirq() without the ks8851_par.c ks8851_lock_par() spinlock being held, and safely call ks8851_start_xmit_par() without attempting to lock the already locked spinlock. Since ks8851_irq() is protected by local_bh_disable()/local_bh_enable() now, replace netif_rx() with __netif_rx() which is not duplicating the local_bh_disable()/local_bh_enable() calls.
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于未处理软中断导致修复挂起。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 797047f875b5463719cc70ba213eb691d453c946 ~ 492337a4fbd1421b42df684ee9b34be2a2722540 -
LinuxLinux 5.8 -

II. Public POCs for CVE-2024-35971

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-35971

登录查看更多情报信息。

Mailing List Discussions for CVE-2024-35971 (2)

Other References for CVE-2024-35971 (4)

Same Patch Batch · Linux · 2024-05-20 · 62 CVEs total

CVE-2024-359698.8 HIGHipv6: fix race condition between ipv6_get_ifaddr and ipv6_del_addr
CVE-2024-359808.4 HIGHarm64: tlb: Fix TLBI RANGE operand
CVE-2024-359878.4 HIGHriscv: Fix loading 64-bit NOMMU kernels past the start of RAM
CVE-2024-359937.8 HIGHmm: turn folio_test_hugetlb into a PageType
CVE-2024-360017.8 HIGHnetfs: Fix the pre-flush when appending to a file in writethrough mode
CVE-2024-360077.8 HIGHmlxsw: spectrum_acl_tcam: Fix warning during rehash
CVE-2024-359547.8 HIGHscsi: sg: Avoid sg device teardown race
CVE-2024-359497.8 HIGHbtrfs: make sure that WRITTEN is set on all metadata blocks
CVE-2024-359507.8 HIGHdrm/client: Fully protect modes[] with dev->mode_config.mutex
CVE-2024-359517.8 HIGHdrm/panfrost: Fix the error path in panfrost_mmu_map_fault_addr()
CVE-2024-359487.8 HIGHbcachefs: Check for journal entries overruning end of sb clean section
CVE-2024-359947.8 HIGHfirmware: qcom: uefisecapp: Fix memory related IO errors and crashes
CVE-2024-359907.8 HIGHdma: xilinx_dpdma: Fix locking
CVE-2024-359587.8 HIGHnet: ena: Fix incorrect descriptor free behavior
CVE-2024-360097.8 HIGHax25: Fix netdev refcount issue
CVE-2024-359797.8 HIGHraid1: fix use-after-free for original bio in raid1_write_request()
CVE-2024-359687.8 HIGHpds_core: Fix pdsc_check_pci_health function to use work thread
CVE-2024-359987.5 HIGHsmb3: fix lock ordering potential deadlock in cifs_sync_mid_result
CVE-2024-359997.5 HIGHsmb3: missing lock when picking channel
CVE-2024-359627.1 HIGHnetfilter: complete validation of user input

Showing top 20 of 62 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-35971

No comments yet


Leave a comment