Description (CNA)
In the Linux kernel, the following vulnerability has been resolved: power: supply: qcom_battmgr: fix use-after-free qcom_battmgr_pdr_notify() queues enable_work when the PMIC GLINK service comes up, and the worker recovers battmgr through container_of() to issue firmware requests. The PMIC GLINK client stays on the client list until its devres release action runs, so a PDR notification can keep queueing the work, and a pending or running worker can access battmgr after devres frees it. Make enable_work device-managed with devm_work_autocancel(), registered before the PMIC GLINK client is allocated. The devres cleanup then releases the client first, so no further notification can queue the work, and cancels the work before battmgr is freed. This issue was found by an in-house static analysis tool.
Affected (CNA)
| Vendor / product | Versions |
|---|---|
| Linux / Linux | affected 29e8142b5623b5949587bcc4f591c4e6595c4aca before 35964ed01e10b61a30066b0c568aa0e0e8fb6432; affected 29e8142b5623b5949587bcc4f591c4e6595c4aca before 77fefca305db44b0edd3fcdb52d781771c1ce366; affected 29e8142b5623b5949587bcc4f591c4e6595c4aca before 06618447029c6dddaa02f6e9528efe5dd49fc329; affected 29e8142b5623b5949587bcc4f591c4e6595c4aca before 49fbcd3da2958159370d25dafbf736e654a4d59b; affected 29e8142b5623b5949587bcc4f591c4e6595c4aca before 4e40befedfc8ed86f44e1f81df92d13c149c9f8d |
| Linux / Linux | affected 6.3; unaffected 0 before 6.3; unaffected 6.6.160 through 6.6.*; unaffected 6.12.112 through 6.12.*; unaffected 6.18.50 through 6.18.*; unaffected 7.2.4 through 7.2.*; unaffected 7.3 through * |
CWE
No CWE identifiers supplied.
References
- https://git.kernel.org/stable/c/35964ed01e10b61a30066b0c568aa0e0e8fb6432
- https://git.kernel.org/stable/c/77fefca305db44b0edd3fcdb52d781771c1ce366
- https://git.kernel.org/stable/c/06618447029c6dddaa02f6e9528efe5dd49fc329
- https://git.kernel.org/stable/c/49fbcd3da2958159370d25dafbf736e654a4d59b
- https://git.kernel.org/stable/c/4e40befedfc8ed86f44e1f81df92d13c149c9f8d