CVE-2023-54321
Unknown Unknown - Not Provided
Null Pointer Dereference in Linux Kernel driver core device_add

Publication date: 2025-12-30

Last updated on: 2026-02-26

Assigner: kernel.org

Description
In the Linux kernel, the following vulnerability has been resolved: driver core: fix potential null-ptr-deref in device_add() I got the following null-ptr-deref report while doing fault injection test: BUG: kernel NULL pointer dereference, address: 0000000000000058 CPU: 2 PID: 278 Comm: 37-i2c-ds2482 Tainted: G B W N 6.1.0-rc3+ RIP: 0010:klist_put+0x2d/0xd0 Call Trace: <TASK> klist_remove+0xf1/0x1c0 device_release_driver_internal+0x196/0x210 bus_remove_device+0x1bd/0x240 device_add+0xd3d/0x1100 w1_add_master_device+0x476/0x490 [wire] ds2482_probe+0x303/0x3e0 [ds2482] This is how it happened: w1_alloc_dev() // The dev->driver is set to w1_master_driver. memcpy(&dev->dev, device, sizeof(struct device)); device_add() bus_add_device() dpm_sysfs_add() // It fails, calls bus_remove_device. // error path bus_remove_device() // The dev->driver is not null, but driver is not bound. __device_release_driver() klist_remove(&dev->p->knode_driver) <-- It causes null-ptr-deref. // normal path bus_probe_device() // It's not called yet. device_bind_driver() If dev->driver is set, in the error path after calling bus_add_device() in device_add(), bus_remove_device() is called, then the device will be detached from driver. But device_bind_driver() is not called yet, so it causes null-ptr-deref while access the 'knode_driver'. To fix this, set dev->driver to null in the error path before calling bus_remove_device().
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2025-12-30
Last Modified
2026-02-26
Generated
2026-05-07
AI Q&A
2025-12-30
EPSS Evaluated
2026-05-05
NVD
Affected Vendors & Products
Showing 4 associated CPEs
Vendor Product Version / Range
linux linux_kernel From 5.11 (inc) to 5.15.99 (exc)
linux linux_kernel From 5.16 (inc) to 6.1.16 (exc)
linux linux_kernel From 6.2 (inc) to 6.2.3 (exc)
linux linux_kernel From 2.6.26 (inc) to 5.10.249 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-476 The product dereferences a pointer that it expects to be valid but is NULL.
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

This vulnerability is a potential null pointer dereference in the Linux kernel's device_add() function. It occurs in an error path where a device's driver pointer is set but the driver is not yet bound. When device_add() fails during bus_add_device(), it calls bus_remove_device(), which tries to release the driver by accessing a linked list node (knode_driver). Since device_bind_driver() has not been called yet, this linked list node is not properly initialized, leading to a null pointer dereference and a kernel crash. The fix involves setting the device's driver pointer to null in the error path before calling bus_remove_device() to prevent this dereference.


How can this vulnerability impact me? :

This vulnerability can cause a kernel crash due to a null pointer dereference when adding devices in the Linux kernel. Such crashes can lead to system instability, denial of service, or unexpected reboots, potentially disrupting normal operations on affected systems.


How can this vulnerability be detected on my network or system? Can you suggest some commands?

This vulnerability can be detected by monitoring kernel logs for null pointer dereference errors related to device_add() and driver binding failures. Specifically, look for kernel BUG messages indicating NULL pointer dereference at klist_remove or device_release_driver_internal. Commands such as 'dmesg | grep -i "NULL pointer dereference"' or 'journalctl -k | grep device_add' can help identify these issues.


What immediate steps should I take to mitigate this vulnerability?

The immediate mitigation is to update the Linux kernel to a version where this issue is fixed. The fix involves setting dev->driver to null in the error path before calling bus_remove_device() to prevent null pointer dereference. Until the update is applied, avoid fault injection tests or operations that trigger device_add() error paths that lead to this issue.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart