CVE-2022-49175

Source
https://cve.org/CVERecord?id=CVE-2022-49175
Import Source
https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49175.json
JSON Data
https://api.test.osv.dev/v1/vulns/CVE-2022-49175
Downstream
Related
Published
2025-02-26T01:55:30.087Z
Modified
2026-04-11T11:56:35.915746Z
Summary
PM: core: keep irq flags in device_pm_check_callbacks()
Details

In the Linux kernel, the following vulnerability has been resolved:

PM: core: keep irq flags in devicepmcheck_callbacks()

The function devicepmcheckcallbacks() can be called under the spin lock (in the reported case it happens from genpdadddevice() -> devpmdomainset(), when the genpd uses spinlocks rather than mutexes.

However this function uncoditionally uses spinlockirq() / spinunlockirq(), thus not preserving the CPU flags. Use the irqsave/irqrestore instead.

The backtrace for the reference: [ 2.752010] ------------[ cut here ]------------ [ 2.756769] rawlocalirqrestore() called with IRQs enabled [ 2.762596] WARNING: CPU: 4 PID: 1 at kernel/locking/irqflag-debug.c:10 warnbogusirqrestore+0x34/0x50 [ 2.772338] Modules linked in: [ 2.775487] CPU: 4 PID: 1 Comm: swapper/0 Tainted: G S 5.17.0-rc6-00384-ge330d0d82eff-dirty #684 [ 2.781384] Freeing initrd memory: 46024K [ 2.785839] pstate: 60400005 (nZCv daif +PAN -UAO -TCO -DIT -SSBS BTYPE=--) [ 2.785841] pc : warnbogusirqrestore+0x34/0x50 [ 2.785844] lr : warnbogusirqrestore+0x34/0x50 [ 2.785846] sp : ffff80000805b7d0 [ 2.785847] x29: ffff80000805b7d0 x28: 0000000000000000 x27: 0000000000000002 [ 2.785850] x26: ffffd40e80930b18 x25: ffff7ee2329192b8 x24: ffff7edfc9f60800 [ 2.785853] x23: ffffd40e80930b18 x22: ffffd40e80930d30 x21: ffff7edfc0dffa00 [ 2.785856] x20: ffff7edfc09e3768 x19: 0000000000000000 x18: ffffffffffffffff [ 2.845775] x17: 6572206f74206465 x16: 6c696166203a3030 x15: ffff80008805b4f7 [ 2.853108] x14: 0000000000000000 x13: ffffd40e809550b0 x12: 00000000000003d8 [ 2.860441] x11: 0000000000000148 x10: ffffd40e809550b0 x9 : ffffd40e809550b0 [ 2.867774] x8 : 00000000ffffefff x7 : ffffd40e809ad0b0 x6 : ffffd40e809ad0b0 [ 2.875107] x5 : 000000000000bff4 x4 : 0000000000000000 x3 : 0000000000000000 [ 2.882440] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff7edfc03a8000 [ 2.889774] Call trace: [ 2.892290] warnbogusirqrestore+0x34/0x50 [ 2.896770] rawspinunlockirqrestore+0x94/0xa0 [ 2.901690] genpdunlockspin+0x20/0x30 [ 2.905724] genpdadd_device+0x100/0x2d0 [ 2.909850] __genpddevpmattach+0xa8/0x23c [ 2.914329] genpddevpmattachbyid+0xc4/0x190 [ 2.919167] genpddevpmattachbyname+0x3c/0xd0 [ 2.924086] devpmdomainattachbyname+0x24/0x30 [ 2.929102] pscidtattachcpu+0x24/0x90 [ 2.933230] pscicpuidleprobe+0x2d4/0x46c [ 2.937534] platformprobe+0x68/0xe0 [ 2.941304] really_probe.part.0+0x9c/0x2fc [ 2.945605] __driverprobedevice+0x98/0x144 [ 2.950085] driverprobedevice+0x44/0x15c [ 2.954385] __deviceattachdriver+0xb8/0x120 [ 2.958950] bus_foreachdrv+0x78/0xd0 [ 2.962896] __deviceattach+0xd8/0x180 [ 2.966843] deviceinitialprobe+0x14/0x20 [ 2.971144] busprobedevice+0x9c/0xa4 [ 2.975092] deviceadd+0x380/0x88c [ 2.978679] platformdeviceadd+0x114/0x234 [ 2.983067] platformdeviceregisterfull+0x100/0x190 [ 2.988344] psciidleinit+0x6c/0xb0 [ 2.992113] dooneinitcall+0x74/0x3a0 [ 2.996060] kernelinitfreeable+0x2fc/0x384 [ 3.000543] kernelinit+0x28/0x130 [ 3.004132] retfromfork+0x10/0x20 [ 3.007817] irq event stamp: 319826 [ 3.011404] hardirqs last enabled at (319825): [<ffffd40e7eda0268>] __upconsolesem+0x78/0x84 [ 3.020332] hardirqs last disabled at (319826): [<ffffd40e7fd6d9d8>] el1_dbg+0x24/0x8c [ 3.028458] softirqs last enabled at (318312): [<ffffd40e7ec90410>] _stext+0x410/0x588 [ 3.036678] softirqs last disabled at (318299): [<ffffd40e7ed1bf68>] __irqexitrcu+0x158/0x174 [ 3.045607] ---[ end trace 0000000000000000 ]---

Database specific
{
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2022/49xxx/CVE-2022-49175.json",
    "cna_assigner": "Linux"
}
References

Affected packages

Git / git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

Affected ranges

Type
GIT
Repo
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
Events
Introduced
aa8e54b559479d0cb7eb632ba443b8cacd20cd4b
Fixed
3ec80d52b9b74b9e691997632a543c73eddfeba0
Fixed
78c4d68b952f5f537788dbd454031ea9bf50f642
Fixed
be8bc05f38d667eda1e820bc6f69234795be7809
Fixed
0cccf9d4fb45f1acbc0bbf6d7e4d8d0fb7a10416
Fixed
ede1ef1a7de973321699736ef96d01a4b9a6fe9e
Fixed
c29642ba72f87c0a3d7449f7db5d6d76a7ed53c3
Fixed
2add538e57a2825c61d639260386f385c75e4166
Fixed
c7c0ec5a1dcc3eaa1e85c804c2ccf46e457788a3
Fixed
524bb1da785a7ae43dd413cd392b5071c6c367f8

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49175.json"

Linux / Kernel

Package

Name
Kernel

Affected ranges

Type
ECOSYSTEM
Events
Introduced
4.5.0
Fixed
4.9.311
Type
ECOSYSTEM
Events
Introduced
4.10.0
Fixed
4.14.276
Type
ECOSYSTEM
Events
Introduced
4.15.0
Fixed
4.19.238
Type
ECOSYSTEM
Events
Introduced
4.20.0
Fixed
5.4.189
Type
ECOSYSTEM
Events
Introduced
5.5.0
Fixed
5.10.110
Type
ECOSYSTEM
Events
Introduced
5.11.0
Fixed
5.15.33
Type
ECOSYSTEM
Events
Introduced
5.16.0
Fixed
5.16.19
Type
ECOSYSTEM
Events
Introduced
5.17.0
Fixed
5.17.2

Database specific

source
"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2022-49175.json"