power: supply: max77705: Free allocated workqueue and fix removal order
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 6.18.57, 7.0.10
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: power: supply: max77705: Free allocated workqueue and fix removal order Use devm interface for allocating workqueue to fix two bugs at the same time: 1. Driver leaks the memory on remove(), because the workqueue is not destroyed. 2. Driver allocates workqueue and then registers interrupt handlers with devm interface. This means that probe error paths will not use a reversed order, but first destroy the workqueue and then, via devm release handlers, free the interrupt. The interrupt handler schedules work on this exact workqueue, thus if interrupt is hit in this short time window - after destroying workqueue, but before devm() frees the interrupt - the schedulled work will lead to use of freed memory. Change is not equivalent in the workqueue itself: use non-legacy API which does not set (__WQ_LEGACY | WQ_MEM_RECLAIM). The workqueue is used to update power supply (power_supply_changed()) status, thus there is no point to run it for memory reclaim. Note that dev_name() is not directly used in second argument to prevent possible unlikely parsing any "%" character in device name as format.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From a6a494c8e3ce1fe84aac538b087a4cab868ed83f · fixed in 4338663dfd21b9c6b012185e5c898769acb60692; From a6a494c8e3ce1fe84aac538b087a4cab868ed83f · fixed in b98e4e57e34d099a8f846fa54749654082975ea0; From a6a494c8e3ce1fe84aac538b087a4cab868ed83f · fixed in 1e668baadefb16e81269dbfebf3ffc2672e3a3bb
- Linux Linux
6.15
- KernelLinux
From 6.15.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.0.10