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

power: supply: sbs-battery: Fix use-after-free in power_supply_changed()

Using the `devm_` variant for requesting IRQ _before_ the `devm_`
variant for allocating/registering the `power_supply` handle, means that
the `power_supply` handle will be deallocated/unregistered _before_ the
interrupt handler (since `devm_` naturally deallocates in reverse
allocation order). This means that during removal, there is a race
condition where an interrupt can fire just _after_ the `power_supply`
handle has been freed, *but* just _before_ the corresponding
unregistration of the IRQ handler has run.

This will lead to the IRQ handler calling `power_supply_changed()` with
a freed `power_supply` handle. Which usually crashes the system or
otherwise silently corrupts the memory...

Note that there is a similar situation which can also happen during
`probe()`; the possibility of an interrupt firing _before_ registering
the `power_supply` handle. This would then lead to the nasty situation
of using the `power_supply` handle *uninitialized* in
`power_supply_changed()`.

Fix this racy use-after-free by making sure the IRQ is requested _after_
the registration of the `power_supply` handle. Keep the old behavior of
just printing a warning in case of any failures during the IRQ request
and finishing the probe successfully.
Published: 2026-05-27
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The flaw is in the Linux power_supply subsystem, specifically the sbs‐battery driver. An improper ordering between a devm_ IRQ request and a devm_ power_supply handle registration creates a race condition. When the driver is removed or during probe, an IRQ can fire after the power_supply handle has been freed or before it is fully registered. The interrupt handler then calls power_supply_changed() with a dangling or uninitialized pointer, causing the kernel to crash or silently corrupt memory, potentially enabling privilege escalation or denial of service at kernel level.

Affected Systems

The vulnerability exists in any Linux kernel that includes the sbs‑battery power_supply driver and has not yet applied the fix identified by commit 14d4dee5d8fb361bfff275832087254beab66d72. The affected products are generic Linux kernels; no specific versions are enumerated, so all distributions shipping impacted kernel code are susceptible.

Risk and Exploitability

Exploitation requires triggering an interrupt during driver removal or probe, which is a local privilege escalation scenario that can lead to system crash or memory corruption. EPSS data is not available and the flaw is not listed in the CISA KEV catalog, but the kernel‑level nature of the bug and lack of a mitigation increases the risk. The CVSS score is not provided, yet the impact and potential for full kernel compromise indicate high severity.

Generated by OpenCVE AI on May 27, 2026 at 16:33 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade your Linux kernel to the latest stable release that contains the CVE‑2026‑45916 fix
  • If an immediate upgrade is not possible, rebuild the kernel with the patch from commit 14d4dee5d8fb361bfff275832087254beab66d72 and verify stability
  • As a temporary mitigation, disable or unload the sbs‑battery power_supply driver if it is not required for normal operation

Generated by OpenCVE AI on May 27, 2026 at 16:33 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 27 May 2026 17:00:00 +0000

Type Values Removed Values Added
Weaknesses CWE-362
CWE-416

Wed, 27 May 2026 14:15:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: power: supply: sbs-battery: Fix use-after-free in power_supply_changed() Using the `devm_` variant for requesting IRQ _before_ the `devm_` variant for allocating/registering the `power_supply` handle, means that the `power_supply` handle will be deallocated/unregistered _before_ the interrupt handler (since `devm_` naturally deallocates in reverse allocation order). This means that during removal, there is a race condition where an interrupt can fire just _after_ the `power_supply` handle has been freed, *but* just _before_ the corresponding unregistration of the IRQ handler has run. This will lead to the IRQ handler calling `power_supply_changed()` with a freed `power_supply` handle. Which usually crashes the system or otherwise silently corrupts the memory... Note that there is a similar situation which can also happen during `probe()`; the possibility of an interrupt firing _before_ registering the `power_supply` handle. This would then lead to the nasty situation of using the `power_supply` handle *uninitialized* in `power_supply_changed()`. Fix this racy use-after-free by making sure the IRQ is requested _after_ the registration of the `power_supply` handle. Keep the old behavior of just printing a warning in case of any failures during the IRQ request and finishing the probe successfully.
Title power: supply: sbs-battery: Fix use-after-free in power_supply_changed()
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-05-27T12:17:32.565Z

Reserved: 2026-05-13T15:03:33.085Z

Link: CVE-2026-45916

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-05-27T14:17:06.463

Modified: 2026-05-27T14:48:03.013

Link: CVE-2026-45916

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-05-27T18:45:39Z

Weaknesses