greybus: raw: fix use-after-free on cdev close
Affects the Linux kernel greybus raw driver when a bundle is disconnected while its chardev is open. Fixed in stable releases 6.6.160, 6.12.114, 6.18.57 and 7.0.10.
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- How many real-world setups can hit the bug, from the vendor's advisory and CISA data. It does not know your setup.What do these mean? →
- Specific setups only
- Fix
- Fixed in 6.6.160, 6.12.114, 6.18.57, 7.0.10
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: greybus: raw: fix use-after-free on cdev close This addresses a use-after-free bug when a raw bundle is disconnected but its chardev is still opened by an application. When the application releases the cdev, it causes the following panic when init on free is enabled (CONFIG_INIT_ON_FREE_DEFAULT_ON=y): refcount_t: underflow; use-after-free. WARNING: CPU: 0 PID: 139 at lib/refcount.c:28 refcount_warn_saturate+0xd0/0x130 ... Call Trace: <TASK> cdev_put+0x18/0x30 __fput+0x255/0x2a0 __x64_sys_close+0x3d/0x80 do_syscall_64+0xa4/0x290 entry_SYSCALL_64_after_hwframe+0x77/0x7f The cdev is contained in the "gb_raw" structure, which is freed in the disconnect operation. When the cdev is released at a later time, cdev_put gets an address that points to freed memory. To fix this use-after-free, convert the struct device from a pointer to being embedded, that makes the lifetime of the cdev and of this device the same. Then, use cdev_device_add, which guarantees that the device won't be released until all references to the cdev have been released. Finally, delegate the freeing of the structure to the device release function, instead of freeing immediately in the disconnect callback.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
Version range not reported
- Linux Linux
4.9
- KernelLinux
From 4.9.0 · fixed in 6.6.160; From 6.7.0 · fixed in 6.12.114; From 6.13.0 · fixed in 6.18.57; From 6.19.0 · fixed in 7.0.10
References 6
git.kernel.org
Questions about CVE-2026-53025
What does this mean?
When a raw greybus bundle is disconnected while an application still has its character device open, the driver frees a structure that is still in use. Closing the device later touches that freed memory, which can underflow a reference count and cause a kernel panic.Source: git.kernel.org
Am I affected, and how do I check?
Affected kernel ranges are 4.9.0 up to 6.6.160, 6.7.0 up to 6.12.114, 6.13.0 up to 6.18.57, and 6.19.0 up to 7.0.10. The setup also needs the greybus raw driver in use and init-on-free enabled (CONFIG_INIT_ON_FREE_DEFAULT_ON=y). Check the running version with uname -r and the kernel config for that option.Source: git.kernel.org
What should I do about it?
Update to the fixed stable release for your branch: 6.6.160, 6.12.114, 6.18.57, or 7.0.10 or later. The advisory lists no separate workaround.Source: git.kernel.org
Is it being exploited?
It is not in CISA's Known Exploited Vulnerabilities catalog, and CISA's SSVC assessment does not mark exploitation as active. That does not mean it has not been attacked: vendors and researchers can report attacks before CISA lists them. No public exploit code is tracked.Source: cve.now feed data