Skip to main content

CVE-2022-49194: Vulnerability in Linux Linux

High
VulnerabilityCVE-2022-49194cvecve-2022-49194
Published: Wed Feb 26 2025 (02/26/2025, 01:55:39 UTC)
Source: CVE
Vendor/Project: Linux
Product: Linux

Description

In the Linux kernel, the following vulnerability has been resolved: net: bcmgenet: Use stronger register read/writes to assure ordering GCC12 appears to be much smarter about its dependency tracking and is aware that the relaxed variants are just normal loads and stores and this is causing problems like: [ 210.074549] ------------[ cut here ]------------ [ 210.079223] NETDEV WATCHDOG: enabcm6e4ei0 (bcmgenet): transmit queue 1 timed out [ 210.086717] WARNING: CPU: 1 PID: 0 at net/sched/sch_generic.c:529 dev_watchdog+0x234/0x240 [ 210.095044] Modules linked in: genet(E) nft_fib_inet nft_fib_ipv4 nft_fib_ipv6 nft_fib nft_reject_inet nf_reject_ipv4 nf_reject_ipv6 nft_reject nft_ct nft_chain_nat] [ 210.146561] ACPI CPPC: PCC check channel failed for ss: 0. ret=-110 [ 210.146927] CPU: 1 PID: 0 Comm: swapper/1 Tainted: G E 5.17.0-rc7G12+ #58 [ 210.153226] CPPC Cpufreq:cppc_scale_freq_workfn: failed to read perf counters [ 210.161349] Hardware name: Raspberry Pi Foundation Raspberry Pi 4 Model B/Raspberry Pi 4 Model B, BIOS EDK2-DEV 02/08/2022 [ 210.161353] pstate: 80400005 (Nzcv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 210.161358] pc : dev_watchdog+0x234/0x240 [ 210.161364] lr : dev_watchdog+0x234/0x240 [ 210.161368] sp : ffff8000080a3a40 [ 210.161370] x29: ffff8000080a3a40 x28: ffffcd425af87000 x27: ffff8000080a3b20 [ 210.205150] x26: ffffcd425aa00000 x25: 0000000000000001 x24: ffffcd425af8ec08 [ 210.212321] x23: 0000000000000100 x22: ffffcd425af87000 x21: ffff55b142688000 [ 210.219491] x20: 0000000000000001 x19: ffff55b1426884c8 x18: ffffffffffffffff [ 210.226661] x17: 64656d6974203120 x16: 0000000000000001 x15: 6d736e617274203a [ 210.233831] x14: 2974656e65676d63 x13: ffffcd4259c300d8 x12: ffffcd425b07d5f0 [ 210.241001] x11: 00000000ffffffff x10: ffffcd425b07d5f0 x9 : ffffcd4258bdad9c [ 210.248171] x8 : 00000000ffffdfff x7 : 000000000000003f x6 : 0000000000000000 [ 210.255341] x5 : 0000000000000000 x4 : 0000000000000000 x3 : 0000000000001000 [ 210.262511] x2 : 0000000000001000 x1 : 0000000000000005 x0 : 0000000000000044 [ 210.269682] Call trace: [ 210.272133] dev_watchdog+0x234/0x240 [ 210.275811] call_timer_fn+0x3c/0x15c [ 210.279489] __run_timers.part.0+0x288/0x310 [ 210.283777] run_timer_softirq+0x48/0x80 [ 210.287716] __do_softirq+0x128/0x360 [ 210.291392] __irq_exit_rcu+0x138/0x140 [ 210.295243] irq_exit_rcu+0x1c/0x30 [ 210.298745] el1_interrupt+0x38/0x54 [ 210.302334] el1h_64_irq_handler+0x18/0x24 [ 210.306445] el1h_64_irq+0x7c/0x80 [ 210.309857] arch_cpu_idle+0x18/0x2c [ 210.313445] default_idle_call+0x4c/0x140 [ 210.317470] cpuidle_idle_call+0x14c/0x1a0 [ 210.321584] do_idle+0xb0/0x100 [ 210.324737] cpu_startup_entry+0x30/0x8c [ 210.328675] secondary_start_kernel+0xe4/0x110 [ 210.333138] __secondary_switched+0x94/0x98 The assumption when these were relaxed seems to be that device memory would be mapped non reordering, and that other constructs (spinlocks/etc) would provide the barriers to assure that packet data and in memory rings/queues were ordered with respect to device register reads/writes. This itself seems a bit sketchy, but the real problem with GCC12 is that it is moving the actual reads/writes around at will as though they were independent operations when in truth they are not, but the compiler can't know that. When looking at the assembly dumps for many of these routines its possible to see very clean, but not strictly in program order operations occurring as the compiler would be free to do if these weren't actually register reads/write operations. Its possible to suppress the timeout with a liberal bit of dma_mb()'s sprinkled around but the device still seems unable to reliably send/receive data. A better plan is to use the safer readl/writel everywhere. Since this partially reverts an older commit, which notes the use of the relaxed variants for performance reasons. I would suggest that any performance problems ---truncated---

AI-Powered Analysis

AILast updated: 06/30/2025, 03:57:05 UTC

Technical Analysis

CVE-2022-49194 is a vulnerability identified in the Linux kernel's bcmgenet network driver, which is responsible for managing Broadcom GENET Ethernet hardware. The issue arises from the use of relaxed memory access operations (relaxed register read/writes) that do not enforce strict ordering guarantees. The vulnerability was triggered by changes in GCC 12's compiler optimizations, which became more aggressive in reordering memory operations. This reordering breaks assumptions in the bcmgenet driver about the ordering of device memory accesses and register reads/writes, leading to race conditions and timing issues. Specifically, the relaxed memory operations allowed the compiler to reorder critical device register accesses, causing network transmit queues to time out and the device to become unreliable in sending and receiving data. The problem manifests as kernel warnings and network device watchdog timeouts, as seen in the provided kernel logs. The root cause is that the driver relied on external synchronization mechanisms (like spinlocks) and the assumption that device memory is non-reordering, which GCC 12's optimizations invalidate. The fix involves replacing the relaxed memory operations with stronger, ordered readl/writel operations to ensure proper memory ordering and device register access consistency. This change partially reverts an earlier performance optimization that used relaxed variants for speed, prioritizing correctness and stability over performance. The vulnerability affects Linux kernel versions containing the specified commit hashes and is particularly relevant for systems using the bcmgenet driver, such as Raspberry Pi 4 Model B devices. No known exploits are reported in the wild, and no CVSS score has been assigned yet.

Potential Impact

For European organizations, the impact of CVE-2022-49194 primarily concerns network reliability and availability on Linux systems utilizing the bcmgenet driver, notably embedded or IoT devices like Raspberry Pi 4. Organizations relying on such hardware for network infrastructure, edge computing, or industrial control systems may experience network outages, degraded performance, or device instability due to transmit queue timeouts and failed packet transmissions. This can disrupt critical services, data flows, and operational technology environments. Although this vulnerability does not directly lead to remote code execution or privilege escalation, the resulting network instability could be exploited by attackers to cause denial of service or to facilitate lateral movement by disrupting normal network operations. The vulnerability's impact on confidentiality and integrity is limited, but availability is significantly affected. European sectors with extensive use of Linux-based embedded systems, such as manufacturing, telecommunications, and smart city infrastructure, may face operational risks. Additionally, the reliance on GCC 12 and newer kernel versions means that organizations upgrading their Linux kernels or compilers without applying this fix could inadvertently introduce this instability.

Mitigation Recommendations

1. Apply the official Linux kernel patches that replace relaxed memory operations with ordered readl/writel calls in the bcmgenet driver to ensure proper memory ordering and device register access. 2. For organizations using Raspberry Pi 4 or similar hardware with bcmgenet, update to the latest stable kernel releases that include this fix. 3. Avoid using GCC 12 or newer compilers with affected kernel versions unless the patch is applied, as compiler optimizations exacerbate the issue. 4. Conduct thorough testing of network drivers and device stability after kernel or compiler upgrades to detect similar timing or ordering issues early. 5. Implement monitoring for network device watchdog timeouts and kernel warnings related to bcmgenet to detect symptoms of this vulnerability in production environments. 6. For critical systems, consider isolating affected devices or using alternative network drivers/hardware until patches are applied. 7. Engage with Linux distribution vendors to ensure timely backporting and deployment of patches in enterprise-grade kernels.

Need more detailed analysis?Get Pro

Technical Details

Data Version
5.1
Assigner Short Name
Linux
Date Reserved
2025-02-26T01:49:39.287Z
Cisa Enriched
false
Cvss Version
null
State
PUBLISHED

Threat ID: 682d982dc4522896dcbe520d

Added to database: 5/21/2025, 9:09:01 AM

Last enriched: 6/30/2025, 3:57:05 AM

Last updated: 8/8/2025, 11:05:56 AM

Views: 12

Actions

PRO

Updates to AI analysis are available only with a Pro account. Contact root@offseq.com for access.

Please log in to the Console to use AI analysis features.

Need enhanced features?

Contact root@offseq.com for Pro access with improved analysis and higher rate limits.

Latest Threats