CVE-2022-49175

5.5 MEDIUM

📋 TL;DR

This CVE describes a race condition vulnerability in the Linux kernel's power management subsystem where device_pm_check_callbacks() incorrectly uses spin_lock_irq()/spin_unlock_irq() instead of irqsave/irqrestore variants, potentially corrupting interrupt flags when called under spin locks. This affects Linux systems using generic power domains (genpd) with spinlocks rather than mutexes.

💻 Affected Systems

Products:
  • Linux kernel
Versions: Kernel versions before the fix commits (specific versions vary by distribution backporting)
Operating Systems: Linux distributions using affected kernel versions
Default Config Vulnerable: ⚠️ Yes
Notes: Only affects systems using generic power domains (genpd) configured with spinlocks rather than mutexes. ARM systems with PSCI CPU idle are specifically mentioned in the backtrace.

📦 What is this software?

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

Linux Kernel by Linux

The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...

Learn more about Linux Kernel →

⚠️ Risk & Real-World Impact

🔴

Worst Case

Kernel panic or system crash due to interrupt state corruption, leading to denial of service.

🟠

Likely Case

System instability, kernel warnings, or occasional crashes during device power management operations.

🟢

If Mitigated

Minor performance impact from proper interrupt handling with no security compromise.

🌐 Internet-Facing: LOW - This is a local kernel vulnerability requiring local access.
🏢 Internal Only: MEDIUM - Could cause system instability affecting internal services, but requires local access to trigger.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: NO
Unauthenticated Exploit: ✅ No
Complexity: HIGH

Exploitation requires local access and specific timing conditions to trigger the race condition. Primarily a stability issue rather than a security vulnerability for privilege escalation.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Fixed in kernel commits: 0cccf9d4fb45f1acbc0bbf6d7e4d8d0fb7a10416, 2add538e57a2825c61d639260386f385c75e4166, 3ec80d52b9b74b9e691997632a543c73eddfeba0, 524bb1da785a7ae43dd413cd392b5071c6c367f8, 78c4d68b952f5f537788dbd454031ea9bf50f642

Vendor Advisory: https://git.kernel.org/stable/c/0cccf9d4fb45f1acbc0bbf6d7e4d8d0fb7a10416

Restart Required: Yes

Instructions:

1. Update Linux kernel to version containing the fix. 2. Check your distribution's security advisories for backported patches. 3. Reboot system after kernel update.

🔧 Temporary Workarounds

Disable genpd spinlock usage

linux

Configure generic power domains to use mutexes instead of spinlocks if possible

echo 'options genpd use_mutexes=1' > /etc/modprobe.d/genpd.conf

🧯 If You Can't Patch

  • Monitor system logs for 'raw_local_irq_restore() called with IRQs enabled' warnings
  • Restrict local user access to systems where stability is critical

🔍 How to Verify

Check if Vulnerable:

Check kernel version and look for the warning 'raw_local_irq_restore() called with IRQs enabled' in dmesg or system logs during device attachment operations.

Check Version:

uname -r

Verify Fix Applied:

Verify kernel version includes one of the fix commits and monitor for absence of the IRQ warning in logs.

📡 Detection & Monitoring

Log Indicators:

  • 'raw_local_irq_restore() called with IRQs enabled' warning in kernel logs
  • 'WARNING: CPU:' messages related to irqflag-debug.c

Network Indicators:

  • None - this is a local kernel issue

SIEM Query:

source="kernel" AND "raw_local_irq_restore() called with IRQs enabled"

🔗 References

📤 Share & Export