CVE-2026-23314 Overview
A device node reference leak vulnerability has been identified in the Linux kernel's bq257xx regulator driver. The issue exists in the bq257xx_reg_dt_parse_gpio() function, which fails to properly release device node references when an error occurs while retrieving subchild nodes. This results in a memory leak that can impact system stability over time.
Critical Impact
Device node reference leaks in kernel drivers can lead to memory exhaustion and system instability, particularly on embedded systems with limited resources.
Affected Products
- Linux kernel with bq257xx regulator driver
- Systems utilizing TI BQ257xx series battery charger ICs
- Embedded devices with Device Tree GPIO configurations
Discovery Timeline
- 2026-03-25 - CVE CVE-2026-23314 published to NVD
- 2026-03-25 - Last updated in NVD database
Technical Details for CVE-2026-23314
Vulnerability Analysis
This vulnerability is a Memory Leak in the Linux kernel's regulator subsystem, specifically within the bq257xx driver used for Texas Instruments BQ257xx series battery charger integrated circuits. The root cause lies in improper reference counting for device tree nodes.
In Linux kernel device driver development, the Device Tree (DT) parsing functions operate with reference counting semantics. When iterating through child nodes using functions like of_get_child_by_name() or similar iterators, the kernel increments a reference count on the returned node. Proper cleanup requires calling of_node_put() to decrement this reference count when the node is no longer needed.
The bq257xx_reg_dt_parse_gpio() function correctly obtains references to child nodes during GPIO configuration parsing. However, when an error occurs while attempting to get a subchild node, the function returns early without calling of_node_put(child) on the already-acquired parent child node reference.
Root Cause
The vulnerability stems from an incomplete error handling path in the Device Tree parsing logic. When the function encounters a failure condition while retrieving subchild nodes, it returns directly to the caller without properly cleaning up the reference to the child node that was successfully obtained earlier in the function.
This pattern is a common source of memory leaks in kernel drivers, as the reference counting mechanism relies on explicit cleanup calls that can be easily overlooked in error paths.
Attack Vector
This is a local vulnerability that cannot be directly exploited by remote attackers. The impact is primarily related to resource exhaustion rather than code execution or privilege escalation.
The vulnerability is triggered during device initialization when the kernel parses Device Tree configurations for bq257xx regulator devices. Each time the error path is taken, a small amount of kernel memory is leaked. On systems where the affected driver is repeatedly loaded and unloaded, or where the error condition is frequently triggered, this can lead to gradual memory exhaustion.
The attack vector is considered local and requires either:
- Physical access to modify Device Tree configurations
- Privileged access to load/unload kernel modules
- A malformed Device Tree blob that triggers the error path
The vulnerability is described in detail in the kernel git commit 4baaddaa.
Detection Methods for CVE-2026-23314
Indicators of Compromise
- Gradual increase in kernel memory usage (kmalloc-related) over extended periods
- Kernel log messages indicating failures in bq257xx driver initialization
- Memory pressure warnings on embedded systems with limited RAM
- Elevated device tree node reference counts in kernel debugging output
Detection Strategies
- Monitor kernel memory allocation statistics using /proc/meminfo or vmstat
- Enable kernel memory leak detection with kmemleak debugging feature
- Review system logs for bq257xx driver error messages during boot
- Implement memory baseline monitoring for embedded Linux deployments
Monitoring Recommendations
- Deploy system monitoring solutions that track kernel memory utilization trends
- Configure alerts for abnormal memory growth patterns on affected systems
- Enable kernel debugging options (CONFIG_DEBUG_KOBJECT_RELEASE) in development builds
- Perform periodic audits of Device Tree configurations for malformed entries
How to Mitigate CVE-2026-23314
Immediate Actions Required
- Update to a patched Linux kernel version containing the fix
- Review and validate Device Tree configurations for bq257xx devices
- Monitor affected systems for signs of memory degradation
- Consider temporarily disabling the bq257xx driver if not required for system operation
Patch Information
The Linux kernel maintainers have released patches to address this vulnerability. The fix ensures that of_node_put(child) is properly called in all error paths within the bq257xx_reg_dt_parse_gpio() function.
The patches are available through the following kernel git commits:
System administrators should apply the appropriate patch for their kernel version or upgrade to a kernel release that includes the fix.
Workarounds
- Blacklist the bq257xx kernel module if not required using /etc/modprobe.d/blacklist.conf
- Ensure Device Tree configurations are valid to minimize error path triggers
- Schedule periodic system reboots as a temporary mitigation for memory accumulation
- Monitor memory usage and proactively restart affected services if thresholds are exceeded
# Configuration example
# Blacklist the bq257xx module if not needed
echo "blacklist bq257xx" >> /etc/modprobe.d/blacklist-bq257xx.conf
# Update initramfs to apply the blacklist
update-initramfs -u
# Verify the module is not loaded
lsmod | grep bq257xx
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.


