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

power: supply: twl4030_charger: cancel workers via devm

bci is devm-allocated. Two workers (bci->work and bci->current_worker)
dereference it. twl4030_bci_remove() disables charging and masks
interrupts. It cancels neither worker. A worker pending at remove() can
run after devm frees bci.

The USB transceiver comes from devm_usb_get_phy_by_node(). devm
unregisters its notifier only after remove() returns. A cancel_work_sync()
in remove() can then race a notifier reschedule. devm_work_autocancel()
and devm_delayed_work_autocancel() avoid that. They cancel the workers
during devm release, before bci is freed.

The current_worker is registered first, since devm will cancel in
reverse order and bci->work can reschedule current_worker.

[Move comment about order into the commit message]
Published: 2026-09-11
Score: 4.4 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Use‑after‑free leading to potential system instability
Action: Apply Patch
AI Analysis

Impact

The vulnerability arises in the Linux kernel’s twl4030 charger driver when a device is removed. Two work queues that reference a devm‑allocated structure are not cancelled before the structure is freed. As a result, a worker can run after its backing memory has been released, causing a dangling pointer dereference and memory corruption. This flaw can lead to kernel crashes, loss of service, or, in more extreme cases, could be exploited to gain escalated privileges if an attacker can control the removal sequence.

Affected Systems

All Linux kernel versions that include the twl4030 charger driver and contain the unsafely cancelled work queues are affected. The exact affected kernel series is not listed by the CVE, so systems running recent releases that have not yet adopted the upstream fix should be reviewed.

Risk and Exploitability

The CVSS base score of 4.4 indicates moderate severity. The EPSS score of <1% indicates that the overall likelihood of exploitation remains very low, although the presence of the weakness remains. the C are no known active exploits. The vulnerability requires local privileges to trigger a race between device removal and a work queue that still references the freed devm object, meaning the attack surface is limited to privileged users or compromised firmware. Nonetheless, the use‑after‑free can still cause kernel crashes and service disruption.

Generated by OpenCVE AI on September 13, 2026 at 03:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to the latest stable release that incorporates the upstream patch for the twl4030 charger driver.
  • If a kernel upgrade is not immediately possible, apply the relevant commit to the driver that cancels both work queues before allowing the devm object to be freed.
  • As a temporary measure, disable or unload the twl4030 charger module until the proper cancellation is in place, or configure the system to block driver unload while the work queues are active.

Generated by OpenCVE AI on September 13, 2026 at 03:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Sat, 12 Sep 2026 00:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-825
References
Metrics threat_severity

None

cvssV3_1

{'score': 4.4, 'vector': 'CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H'}

threat_severity

Moderate


Fri, 11 Sep 2026 23:45:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: power: supply: twl4030_charger: cancel workers via devm bci is devm-allocated. Two workers (bci->work and bci->current_worker) dereference it. twl4030_bci_remove() disables charging and masks interrupts. It cancels neither worker. A worker pending at remove() can run after devm frees bci. The USB transceiver comes from devm_usb_get_phy_by_node(). devm unregisters its notifier only after remove() returns. A cancel_work_sync() in remove() can then race a notifier reschedule. devm_work_autocancel() and devm_delayed_work_autocancel() avoid that. They cancel the workers during devm release, before bci is freed. The current_worker is registered first, since devm will cancel in reverse order and bci->work can reschedule current_worker. [Move comment about order into the commit message]
Title power: supply: twl4030_charger: cancel workers via devm
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-11T19:43:25.282Z

Reserved: 2026-09-11T19:38:34.708Z

Link: CVE-2026-89464

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-11T20:19:27.410

Modified: 2026-09-11T20:19:27.410

Link: CVE-2026-89464

cve-icon Redhat

Severity : Moderate

Publid Date: 2026-09-11T19:43:25Z

Links: CVE-2026-89464 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-09-13T03:45:18Z

Weaknesses
  • CWE-825

    Expired Pointer Dereference