CVE-2026-89465

power: supply: rt9455: quiesce delayed work before teardown

State
Published
Severity
8.4 High
Published
Sep 11, 2026
Updated
Oct 30, 2026
Reserved
Sep 11, 2026

Read the record on cve.org

Description

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

power: supply: rt9455: quiesce delayed work before teardown

The threaded IRQ handler can queue pwr_rdy_work, max_charging_time_work and batt_presence_work. pwr_rdy_work and batt_presence_work can also queue max_charging_time_work, while batt_presence_work can requeue itself.

rt9455_remove() cancels max_charging_time_work before batt_presence_work. The latter can therefore queue max_charging_time_work after it has already been cancelled:

rt9455_remove() workqueue cancel pwr_rdy_work cancel max_charging_time_work batt_presence_work queues max_charging_time_work cancel batt_presence_work return devres frees rt9455_info max_charging_time_work dereferences rt9455_info

The IRQ also remains registered until devres cleanup and can queue more work after any of the cancellation calls. If rt9455_hw_init() fails after the IRQ has been requested, probe returns without cancelling work that may already have been queued. A pending callback can then access rt9455_info after it has been freed.

Register rt9455_cancel_all_delayed_works() through devm_add_action_or_reset() right after devm_power_supply_register(). devres invokes the action in reverse registration order, after the managed IRQ has been freed and before rt9455_info is released, so the delayed works are drained in both rt9455_remove() and the probe error path. Cancel pwr_rdy_work and batt_presence_work before max_charging_time_work because both can queue the latter.

This issue was found by an in-house static analysis tool.

Scores

CVSSScoreVectorSource
3.18.4 HighCVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before 3def4721431f3e374e1e3124f4d32bb07ae8df1cAffected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before c8645073876cbb1cdc8c2b995d093d08facfb187Affected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before c09a2e4f8f101a44bd786a31696c958473469be0Affected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before 442c60c08ec23ac45da0a58877cab05e0a58f4eaAffected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before df67c7a2fff8414aa766b8cd5ffe11ec1ca27d02Affected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before 1b9978433c61a9b46e48832a1ebceee1cf5c9eb4Affected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before 7323e562f6961e4b7bce3225cde4ecbc78260debAffected
  • e86d69dd786e94046b8f5be7df1b9a8226a40b2a to before 3e7a1ebc32fad5a558254a478efd401c17a24381Affected
LinuxLinux
  • 4.2Affected
  • before 4.2Not affected
  • 5.10.273 through 5.10.*Not affected
  • 5.15.224 through 5.15.*Not affected
  • 6.1.191 through 6.1.*Not affected
  • 6.6.157 through 6.6.*Not affected
  • 6.12.109 through 6.12.*Not affected
  • 6.18.50 through 6.18.*Not affected
  • 7.2.4 through 7.2.*Not affected
  • 7.3 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.