CVE-2026-97950: configfs: pin the symlink target's dirent instead of chasing ->ci_dentry
configfs: pin the symlink target's dirent instead of chasing ->cidentry
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
debian/linuxto a version that resolves this vulnerability.Fixed in 6.12.115-2Fixed in 7.2.12-1Fixed in 7.2.15-1 - Upgrade
Upgrade
debian/linux-6.12to a version that resolves this vulnerability.Fixed in 6.12.113-1~deb12u1 - Upgrade
Upgrade
ubuntu/linux-hwe-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42~24.04.1 - Upgrade
Upgrade
ubuntu/linux-riscv-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1~24.04.1 - Upgrade
Upgrade
ubuntu/linuxto a version that resolves this vulnerability.Fixed in 7.0.0-42.42 - Upgrade
Upgrade
ubuntu/linux-awsto a version that resolves this vulnerability.Fixed in 7.0.0-1016.17 - Upgrade
Upgrade
ubuntu/linux-gcpto a version that resolves this vulnerability.Fixed in 7.0.0-1016.18 - Upgrade
Upgrade
ubuntu/linux-ibmto a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oem-7.0to a version that resolves this vulnerability.Fixed in 7.0.0-1017.17 - Upgrade
Upgrade
ubuntu/linux-oracleto a version that resolves this vulnerability.Fixed in 7.0.0-1015.16 - Upgrade
Upgrade
ubuntu/linux-riscvto a version that resolves this vulnerability.Fixed in 7.0.0-42.42.1
Event History
Frequently Asked Questions
What condition is required to trigger the issue?
A configfs symlink creation must race with removal of the symlink target directory. The target item can remain alive while its dentry and associated configfs dirent have been released by the directory removal path.
What symptom may indicate that a system encountered this bug?
The described failure triggers WARN_ON(!atomic_read(&sd->s_count)) in configfs_get(). This warning can occur when symlink creation dereferences the target item's ci_dentry after a concurrent rmdir has freed that dentry and released its dirent.
What does the fix change?
The fix takes and retains a reference to the target configfs dirent in get_target(), while holding d_lock and atomically with the item reference. It then passes that dirent to create_link(), rather than retrieving it later through ci_dentry.