CVE-2026-99215

EUVD-2026-111967
In the Linux kernel, the following vulnerability has been resolved:

power: supply: core: prevent unregistering a power supply while a callback runs

Once a power supply is registered, its callbacks can immediately start
firing from other contexts, such as external_power_changed() triggered by
the TCPM stack. If a power supply is unregistered while the callback is
still running, the driver data can already be freed when the callback
tries to access it, leading to a use-after-free.

This happens e.g. when the hardware bus carrying the power supply device
malfunctions (e.g. I2C is hogged down by another malfunctioning device)
immediately after the power supply is registered, and thus the core is
still processing the callbacks which were queued up when the driver
starts the removal, leading in some cases to a kernel crash, e.g.:

[   11.645942] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000005
[   11.646751] Mem abort info:
[   11.647006]   ESR = 0x0000000096000004
[   11.647338]   EC = 0x25: DABT (current EL), IL = 32 bits
[   11.647806]   SET = 0, FnV = 0
[   11.648077]   EA = 0, S1PTW = 0
[   11.648356]   FSC = 0x04: level 0 translation fault
[   11.648785] Data abort info:
[   11.649041]   ISV = 0, ISS = 0x00000004, ISS2 = 0x00000000
[   11.649524]   CM = 0, WnR = 0, TnD = 0, TagAccess = 0
[   11.649981]   GCS = 0, Overlay = 0, DirtyBit = 0
[   11.650390] [0000000000000005] user address but active_mm is swapper
[   11.650955] Internal error: Oops: 0000000096000004 [#1]  SMP
[   11.651460] Modules linked in:
[   11.651742] CPU: 1 UID: 0 PID: 144 Comm: kworker/1:2 Not tainted 7.2.0-rc6-g62a9297af2cd #1 PREEMPT
[   11.652553] Hardware name: Flipper One rev. F0B1C2 (DT)
[   11.653024] Workqueue: events power_supply_changed_work
[   11.653511] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[   11.654135] pc : __power_supply_is_supplied_by+0x18/0x100
[   11.654624] lr : __power_supply_am_i_supplied+0x40/0xb8
[   11.655098] sp : ffff80008192bb30
[   11.655399] x29: ffff80008192bb30 x28: 0000000000000000 x27: 0000000000000000
[   11.656049] x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000000
[   11.656695] x23: ffff0000c19f4200 x22: ffffdb2232ba4ea8 x21: ffff80008192bc28
[   11.657344] x20: ffff0000c1eef000 x19: ffff80008192bc18 x18: 00000000a0886e62
[   11.657991] x17: 000000040044ffff x16: 04500072b5503510 x15: 0000000000000000
[   11.658639] x14: 0000000000000000 x13: 0000000000000220 x12: 0000000000000000
[   11.659286] x11: 0000000000000000 x10: ffff0000c1fdb2b0 x9 : ffffdb2232ba5590
[   11.659934] x8 : 00000000e5b906e6 x7 : ffff0000c2502778 x6 : ffffdb22339793d0
[   11.660581] x5 : ffff80008192bc18 x4 : ffff0000c19cbca0 x3 : 0000000000000000
[   11.661228] x2 : ffff0000c1fdaf40 x1 : ffffffffffffffed x0 : ffff0000c1eef000
[   11.661878] Call trace:
[   11.662103]  __power_supply_is_supplied_by+0x18/0x100 (P)
[   11.662596]  __power_supply_am_i_supplied+0x40/0xb8
[   11.663040]  psy_for_each_psy_cb+0x20/0x40
[   11.663416]  class_for_each_device+0x110/0x150
[   11.663825]  power_supply_am_i_supplied+0x68/0x100
[   11.664262]  bq257xx_external_power_changed+0x58/0x140
[   11.664733]  __power_supply_changed_work+0x60/0x80
[   11.665170]  psy_for_each_psy_cb+0x20/0x40
[   11.665545]  class_for_each_device+0x110/0x150
[   11.665953]  power_supply_changed_work+0x98/0x1b8
[   11.666382]  process_one_work+0x164/0x4c0
[   11.666758]  worker_thread+0x19c/0x320
[   11.667104]  kthread+0x138/0x150
[   11.667408]  ret_from_fork+0x10/0x20
[   11.667744] Code: d503233f a9bd7bfd 910003fd a90153f3 (f9400c34)
[   11.668294] ---[ end trace 0000000000000000 ]---

Add a read-write semaphore between external_power_changed() and
power_supply_unregister() to prevent the latter from returning (and thus
the driver from freeing its data) while the callback is still running.
ProviderTypeBase ScoreAtk. VectorAtk. ComplexityPriv. RequiredVector
NISTPrimary
UNKNOWN
---
Awaiting analysis
This vulnerability is currently awaiting analysis.
Base Score
CVSS 3.x
EPSS Score
Percentile: Unknown
Debian logo
Debian Releases
Debian Product
Codename
linux
bookworm
vulnerable
bookworm (security)
vulnerable
forky
vulnerable
sid
7.2.13-1
fixed
trixie
vulnerable
trixie (security)
vulnerable
Ubuntu logo
Ubuntu Releases
Ubuntu Product
Codename
linux
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-hwe
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
xenial
needs-triage
linux-hwe-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-hwe-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-hwe-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-hwe-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-hwe-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-hwe-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-hwe-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-hwe-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-hwe-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-hwe-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-hwe-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-hwe-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-hwe-edge
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
xenial
ignored
linux-lts-xenial
jammy
dne
noble
dne
resolute
dne
stonking
dne
trusty
needs-triage
linux-kvm
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
xenial
needs-triage
linux-allwinner-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-aws
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-aws-5.0
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-aws-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-aws-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-aws-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-aws-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-aws-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-aws-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-aws-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-aws-hwe
jammy
dne
noble
dne
resolute
dne
stonking
dne
xenial
needs-triage
linux-azure
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
trusty
needs-triage
xenial
needs-triage
linux-azure-4.15
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-azure-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-azure-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-azure-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-azure-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-azure-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-fde
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
linux-azure-fde-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-fde-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-azure-fde-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-azure-fde-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-azure-fde-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-fde-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-fde-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-nvidia
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-azure-nvidia-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-bluefield
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-edge
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
xenial
needs-triage
linux-aws-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-azure-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-fips
bionic
needs-triage
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp
bionic
ignored
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
xenial
needs-triage
linux-gcp-4.15
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gcp-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-gcp-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-gcp-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-gcp-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-gcp-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-gcp-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-gcp-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-gcp-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-gke
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
dne
linux-gke-4.15
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gke-5.4
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gke-5.15
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gkeop
focal
ignored
jammy
needs-triage
noble
needs-triage
resolute
dne
stonking
dne
linux-gkeop-5.4
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-gkeop-5.15
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-ibm
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
dne
linux-ibm-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-ibm-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-ibm-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-intel-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-intel-iotg
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-intel-iotg-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-iot
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-intel-iot-realtime
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-lowlatency
jammy
needs-triage
noble
needs-triage
resolute
dne
stonking
dne
linux-lowlatency-hwe-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-lowlatency-hwe-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-lowlatency-hwe-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-lowlatency-hwe-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-lowlatency-hwe-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-lowlatency-hwe-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-nvidia
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
dne
linux-nvidia-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-nvidia-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-nvidia-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-nvidia-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-nvidia-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-nvidia-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-nvidia-bos
jammy
dne
noble
dne
resolute
needs-triage
stonking
dne
linux-nvidia-lowlatency
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-nvidia-tegra
jammy
needs-triage
noble
needs-triage
resolute
dne
stonking
dne
linux-nvidia-tegra-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-nvidia-tegra-igx
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-oracle
bionic
needs-triage
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
xenial
needs-triage
linux-oracle-5.0
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.3
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oracle-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-oracle-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-oracle-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-oracle-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-oracle-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-oem
bionic
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oem-5.6
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oem-5.10
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oem-5.13
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oem-5.14
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-oem-5.17
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-oem-6.0
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-oem-6.1
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-oem-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-oem-6.8
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-oem-6.11
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-oem-6.14
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-oem-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-oem-7.0
jammy
dne
noble
dne
resolute
needs-triage
stonking
dne
linux-raspi
focal
needs-triage
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
linux-raspi2
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-raspi-5.4
bionic
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-raspi-realtime
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-realtime
jammy
needs-triage
noble
needs-triage
resolute
needs-triage
stonking
needs-triage
linux-realtime-6.8
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-realtime-6.14
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-riscv
focal
ignored
jammy
ignored
noble
ignored
resolute
needs-triage
stonking
needs-triage
linux-riscv-5.8
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-riscv-5.11
focal
ignored
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-riscv-5.15
focal
needs-triage
jammy
dne
noble
dne
resolute
dne
stonking
dne
linux-riscv-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-riscv-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-riscv-6.8
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-riscv-6.14
jammy
dne
noble
ignored
resolute
dne
stonking
dne
linux-riscv-6.17
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-riscv-7.0
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-starfive-5.19
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-starfive-6.2
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-starfive-6.5
jammy
ignored
noble
dne
resolute
dne
stonking
dne
linux-vmware
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-xilinx
jammy
dne
noble
needs-triage
resolute
dne
stonking
dne
linux-xilinx-zynqmp
focal
needs-triage
jammy
needs-triage
noble
dne
resolute
dne
stonking
dne
linux-realtime-6.17
jammy
dne
noble
dne
resolute
dne
stonking
dne