# CVE-2023-53166: linux: In the Linux kernel, the following vulnerability has been resolved:  power: supply: bq25890: Fix external_power_chang...

CVE-2023-53166 is fixed in linux on 1 platform, first by DEBIAN-CVE-2023-53166, released September 15, 2025. It is not reported as exploited. Patch Radar priority: Routine.

- Web page: https://patchblox.com/security/cve/CVE-2023-53166
- Priority: Routine
- CVSS: 4.7 (medium)
- EPSS: 0.0011
- CISA KEV: not listed
- Exploited (vendor report): no
- Publicly disclosed: no
- Published: Sep 15, 2025

## Description

In the Linux kernel, the following vulnerability has been resolved:  power: supply: bq25890: Fix external_power_changed race  bq25890_charger_external_power_changed() dereferences bq->charger, which gets sets in bq25890_power_supply_init() like this:    bq->charger = devm_power_supply_register(bq->dev, &bq->desc, &psy_cfg);  As soon as devm_power_supply_register() has called device_add() the external_power_changed callback can get called. So there is a window where bq25890_charger_external_power_changed() may get called while bq->charger has not been set yet leading to a NULL pointer dereference.  This race hits during boot sometimes on a Lenovo Yoga Book 1 yb1-x90f when the cht_wcove_pwrsrc (extcon) power_supply is done with detecting the connected charger-type which happens to exactly hit the small window:    BUG: kernel NULL pointer dereference, address: 0000000000000018   <snip>   RIP: 0010:__power_supply_is_supplied_by+0xb/0xb0   <snip>   Call Trace:    <TASK>    __power_supply_get_supplier_property+0x19/0x50    class_for_each_device+0xb1/0xe0    power_supply_get_property_from_supplier+0x2e/0x50    bq25890_charger_external_power_changed+0x38/0x1b0 [bq25890_charger]    __power_supply_changed_work+0x30/0x40    class_for_each_device+0xb1/0xe0    power_supply_changed_work+0x5f/0xe0   <snip>  Fixing this is easy. The external_power_changed callback gets passed the power_supply which will eventually get stored in bq->charger, so bq25890_charger_external_power_changed() can simply directly use the passed in psy argument which is always valid.

## Where it's fixed

| Platform | Product | Fixed in | Fix | Released |
|---|---|---|---|---|
| Linux | linux Debian 12.15 (bookworm) | 6.1.37-1 | [DEBIAN-CVE-2023-53166](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53166.md) | Sep 15, 2025 |
| Linux | linux Debian 13.5 (trixie) | 6.3.7-1 | [DEBIAN-CVE-2023-53166](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53166.md) | Sep 15, 2025 |
| Linux | linux Debian 14 | 6.3.7-1 | [DEBIAN-CVE-2023-53166](https://patchblox.com/security/data/fix/linux/debian-cve-2023-53166.md) | Sep 15, 2025 |

---

Data as of 2026-11-08T00:53:09Z UTC. Source: Patchblox Patch Radar (https://patchblox.com/security/patch-radar). Patchblox finds out-of-date software on Windows, macOS and Linux and updates it through release rings: https://patchblox.com/demo

Free to use with attribution: show "Data: Patchblox Patch Radar" with a link to https://patchblox.com/security/patch-radar. Terms, including what needs a written agreement: https://patchblox.com/security/patch-radar/use-the-data

Product names, logos and trademarks shown on Patch Radar belong to their respective owners. They are used only to identify the software each security fix applies to and to help readers find their platform. Their use does not imply any affiliation with, or endorsement by, those owners, and Patchblox is not affiliated with any of them.
