CVE-2022-50724
Description
In the Linux kernel, the following vulnerability has been resolved:
regulator: core: fix resource leak in regulator_register()
I got some resource leak reports while doing fault injection test:
OF: ERROR: memory leak, expected refcount 1 instead of 100, of_node_get()/of_node_put() unbalanced - destroy cset entry: attach overlay node /i2c/pmic@64/regulators/buck1
unreferenced object 0xffff88810deea000 (size 512): comm "490-i2c-rt5190a", pid 253, jiffies 4294859840 (age 5061.046s) hex dump (first 32 bytes): 00 00 00 00 ad 4e ad de ff ff ff ff 00 00 00 00 .....N.......... ff ff ff ff ff ff ff ff a0 1e 00 a1 ff ff ff ff ................ backtrace: [<00000000d78541e2>] kmalloc_trace+0x21/0x110 [<00000000b343d153>] device_private_init+0x32/0xd0 [<00000000be1f0c70>] device_add+0xb2d/0x1030 [<00000000e3e6344d>] regulator_register+0xaf2/0x12a0 [<00000000e2f5e754>] devm_regulator_register+0x57/0xb0 [<000000008b898197>] rt5190a_probe+0x52a/0x861 [rt5190a_regulator]
unreferenced object 0xffff88810b617b80 (size 32): comm "490-i2c-rt5190a", pid 253, jiffies 4294859904 (age 5060.983s) hex dump (first 32 bytes): 72 65 67 75 6c 61 74 6f 72 2e 32 38 36 38 2d 53 regulator.2868-S 55 50 50 4c 59 00 ff ff 29 00 00 00 2b 00 00 00 UPPLY...)...+... backtrace: [<000000009da9280d>] __kmalloc_node_track_caller+0x44/0x1b0 [<0000000025c6a4e5>] kstrdup+0x3a/0x70 [<00000000790efb69>] create_regulator+0xc0/0x4e0 [<0000000005ed203a>] regulator_resolve_supply+0x2d4/0x440 [<0000000045796214>] regulator_register+0x10b3/0x12a0 [<00000000e2f5e754>] devm_regulator_register+0x57/0xb0 [<000000008b898197>] rt5190a_probe+0x52a/0x861 [rt5190a_regulator]
After calling regulator_resolve_supply(), the 'rdev->supply' is set by set_supply(), after this set, in the error path, the resources need be released, so call regulator_put() to avoid the leaks.
AI Insight
LLM-synthesized narrative grounded in this CVE's description and references.
Resource leak in Linux kernel's regulator_register() when regulator_resolve_supply() succeeds but later error path fails to release resources, leading to memory leaks.
Vulnerability
A resource leak vulnerability exists in the Linux kernel's regulator core within the regulator_register() function. When regulator_resolve_supply() successfully sets rdev->supply, but an error subsequently occurs, the allocated resources for the supply regulator are not properly released. This results in unreferenced memory objects, as demonstrated by kernel memory leak reports showing allocations from device_private_init and kstrdup that are not freed.
Exploitation
An attacker can trigger this bug through fault injection, such as causing a probe failure in a regulator driver (e.g., rt5190a_probe). Exploitation requires the ability to induce errors during regulator registration, which may be achieved by physically removing hardware, triggering voltage faults, or using kernel fault-injection mechanisms. No authentication is needed as the vulnerability is reachable during normal device enumeration.
Impact
Successful exploitation leads to memory leaks, depleting system memory over time and potentially causing denial of service (DoS). The leaked objects include device private data and dynamically allocated regulator supply names, which can accumulate with repeated probe attempts, degrading system stability.
Mitigation
The fix is included in Linux kernel stable commits [1] and [2] which add a regulator_put() call in the error path of regulator_register() to properly release the supply regulator. Users should update to a patched kernel version where these commits are backported.
AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.
Affected products
1Patches
635593d60b1626a03c31d08f9c4c64d8abd6590b713aadc12f86b2f216636ba62319a42c5Vulnerability mechanics
Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.
References
6- git.kernel.org/stable/c/35593d60b1622834984c43add7646d4069671aa9nvd
- git.kernel.org/stable/c/6a03c31d08f95dca9633a552de167b9e625833a8nvd
- git.kernel.org/stable/c/90b713aadc1240bf2dd03d610d6c1d016a9123a2nvd
- git.kernel.org/stable/c/ba62319a42c50e6254e98b3f316464fac8e77968nvd
- git.kernel.org/stable/c/c4c64d8abd656b9807b63178750fa91454602b86nvd
- git.kernel.org/stable/c/f86b2f216636790d5922458578825e4628fb570fnvd
News mentions
0No linked articles in our index yet.