VYPR
Unrated severityNVD Advisory· Published Dec 24, 2025· Updated Apr 15, 2026

CVE-2023-54079

CVE-2023-54079

Description

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

power: supply: bq27xxx: Fix poll_interval handling and races on remove

Before this patch bq27xxx_battery_teardown() was setting poll_interval = 0 to avoid bq27xxx_battery_update() requeuing the delayed_work item.

There are 2 problems with this:

1. If the driver is unbound through sysfs, rather then the module being rmmod-ed, this changes poll_interval unexpectedly

2. This is racy, after it being set poll_interval could be changed before bq27xxx_battery_update() checks it through /sys/module/bq27xxx_battery/parameters/poll_interval

Fix this by added a removed attribute to struct bq27xxx_device_info and using that instead of setting poll_interval to 0.

There also is another poll_interval related race on remove(), writing /sys/module/bq27xxx_battery/parameters/poll_interval will requeue the delayed_work item for all devices on the bq27xxx_battery_devices list and the device being removed was only removed from that list after cancelling the delayed_work item.

Fix this by moving the removal from the bq27xxx_battery_devices list to before cancelling the delayed_work item.

AI Insight

LLM-synthesized narrative grounded in this CVE's description and references.

A race condition in the Linux kernel's bq27xxx battery driver could cause use-after-free or unexpected behavior when the device is removed.

Vulnerability

In the Linux kernel's bq27xxx battery driver, the bq27xxx_battery_teardown() function set poll_interval = 0 to prevent the delayed work item from being requeued. This approach had two flaws: it could unexpectedly change the module parameter poll_interval when the driver was unbound via sysfs, and it was racy because poll_interval could be modified concurrently through /sys/module/bq27xxx_battery/parameters/poll_interval before the work function checks it [1].

Exploitation

An attacker with local access could exploit this race condition by triggering a device removal (e.g., via sysfs unbind) while simultaneously writing to the poll_interval sysfs parameter. This could cause the delayed work item to be requeued after the device has been torn down, leading to a use-after-free condition [1].

Impact

Successful exploitation could result in a kernel crash (denial of service) or potentially arbitrary code execution, depending on the memory state. The vulnerability affects systems using the bq27xxx battery driver, which is common in many Linux-based devices Linux-based devices.

Mitigation

The fix introduces a removed flag in struct bq27xxx_device_info and moves the device removal from the bq27xxx_battery_devices list to before cancelling the delayed work item, eliminating the race condition [1]. Patches are available in the stable kernel tree; users should update to the latest kernel version.

AI Insight generated on May 19, 2026. Synthesized from this CVE's description and the cited reference URLs; citations are validated against the source bundle.

Affected products

1
  • Linux/Kernelllm-fuzzy
    Range: < 6.x (affected before fixes)

Patches

8

Vulnerability mechanics

Generated on May 9, 2026. Inputs: CWE entries + fix-commit diffs from this CVE's patches. Citations validated against bundle.

References

8

News mentions

0

No linked articles in our index yet.