{"id":"CVE-2026-99173","state":"PUBLISHED","title":"eventfs: Free the eventfs_inode after an rcu grace period too","description":"In the Linux kernel, the following vulnerability has been resolved:\n\neventfs: Free the eventfs_inode after an rcu grace period too\n\ntracefs_d_revalidate() reads ->is_freed of the eventfs_inode that\ndentry->d_fsdata points to, and ->d_revalidate() is called in rcu\npathwalk mode with nothing but rcu_read_lock() held. The dentry itself\nstays around for such a walker, but tracefs_d_release() drops its\nreference to the eventfs_inode when the dentry is killed, and\nrelease_ei() then frees it after a grace period of eventfs_srcu. An\nSRCU grace period doesn't wait for rcu_read_lock() sections, so the\nwalker can read an eventfs_inode that is already gone.\n\nWith a pathwalk held up in tracefs_d_revalidate() while the dentry goes\naway:\n\n  BUG: KASAN: slab-use-after-free in tracefs_d_revalidate+0x76/0x90\n  Read of size 1 at addr ff1100010152d8d0 by task walker/97\n  Call Trace:\n   <TASK>\n   tracefs_d_revalidate+0x76/0x90\n   lookup_fast+0x320/0x640\n   path_lookupat+0x160/0xb00\n   filename_lookup+0x1f1/0x5b0\n   vfs_statx+0xd7/0x3b0\n   vfs_fstatat+0x4d/0x90\n   __do_sys_newfstatat+0xa0/0x100\n   do_syscall_64+0x10e/0x5e0\n   entry_SYSCALL_64_after_hwframe+0x77/0x7f\n  [...]\n  Allocated by task 1:\n   __kmalloc_cache_noprof+0x249/0x560\n   eventfs_create_dir+0x7a/0x590\n   event_create_dir+0x2fb/0xcf0\n   trace_add_event_call+0xbf/0x150\n  [...]\n  Freed by task 11:\n   kfree+0x1db/0x5b0\n   srcu_invoke_callbacks+0x3a3/0x620\n   process_one_work+0x937/0x1810\n   worker_thread+0x4f1/0xd60\n\nBefore commit 8e556432477e (\"eventfs: Use SRCU for freeing\neventfs_inodes\") release_ei() used call_rcu(), which covered the walker,\nwhile eventfs_iterate() needs the SRCU grace period. Wait for both and\nchain call_rcu() from the SRCU callback.","publishedAt":"2026-10-28T10:35:28.017Z","updatedAt":"2026-10-30T12:42:36.897Z","severity":null,"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2ef3d120d19faba3dec35b10a025b00db0284373","status":"affected","lessThan":"5819018dc29fb2ac2fd4865d507f9893c89c0624","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"dd2c767814a876be0f16f0b7f98a403dc176f51e","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"4586ef24ce390e8becb9f3e5852d5d3978b01c33","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"45fcfd5d9c10e0aa977ed5b9bd445707e01bb107","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"2cd88c498ecff8e22bf4c397b8eb226db70ac343","versionType":"git"},{"version":"384f383c5aa7bfd619d9f56a513a36e533428186","status":"affected","versionType":"git"},{"version":"6.6.46","status":"affected","lessThan":"6.6.161","versionType":"semver"},{"version":"6.10.5","status":"affected","lessThan":"6.11","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/tracefs/event_inode.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.11","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/tracefs/event_inode.c"]}],"references":["https://git.kernel.org/stable/c/5819018dc29fb2ac2fd4865d507f9893c89c0624","https://git.kernel.org/stable/c/dd2c767814a876be0f16f0b7f98a403dc176f51e","https://git.kernel.org/stable/c/4586ef24ce390e8becb9f3e5852d5d3978b01c33","https://git.kernel.org/stable/c/45fcfd5d9c10e0aa977ed5b9bd445707e01bb107","https://git.kernel.org/stable/c/2cd88c498ecff8e22bf4c397b8eb226db70ac343"],"weaknesses":[],"ingestedAt":"2026-10-30T13:02:04.640Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/99xxx/CVE-2026-99173.json","commit":"cb14bf1b43b0c9f05f7f40eae2246263fd430780","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-99173","state":"PUBLISHED","datePublished":"2026-10-28T10:35:28.017Z","dateUpdated":"2026-10-30T12:42:36.897Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-09-25T10:25:14.399Z"},"containers":{"cna":{"title":"eventfs: Free the eventfs_inode after an rcu grace period too","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\neventfs: Free the eventfs_inode after an rcu grace period too\n\ntracefs_d_revalidate() reads ->is_freed of the eventfs_inode that\ndentry->d_fsdata points to, and ->d_revalidate() is called in rcu\npathwalk mode with nothing but rcu_read_lock() held. The dentry itself\nstays around for such a walker, but tracefs_d_release() drops its\nreference to the eventfs_inode when the dentry is killed, and\nrelease_ei() then frees it after a grace period of eventfs_srcu. An\nSRCU grace period doesn't wait for rcu_read_lock() sections, so the\nwalker can read an eventfs_inode that is already gone.\n\nWith a pathwalk held up in tracefs_d_revalidate() while the dentry goes\naway:\n\n  BUG: KASAN: slab-use-after-free in tracefs_d_revalidate+0x76/0x90\n  Read of size 1 at addr ff1100010152d8d0 by task walker/97\n  Call Trace:\n   <TASK>\n   tracefs_d_revalidate+0x76/0x90\n   lookup_fast+0x320/0x640\n   path_lookupat+0x160/0xb00\n   filename_lookup+0x1f1/0x5b0\n   vfs_statx+0xd7/0x3b0\n   vfs_fstatat+0x4d/0x90\n   __do_sys_newfstatat+0xa0/0x100\n   do_syscall_64+0x10e/0x5e0\n   entry_SYSCALL_64_after_hwframe+0x77/0x7f\n  [...]\n  Allocated by task 1:\n   __kmalloc_cache_noprof+0x249/0x560\n   eventfs_create_dir+0x7a/0x590\n   event_create_dir+0x2fb/0xcf0\n   trace_add_event_call+0xbf/0x150\n  [...]\n  Freed by task 11:\n   kfree+0x1db/0x5b0\n   srcu_invoke_callbacks+0x3a3/0x620\n   process_one_work+0x937/0x1810\n   worker_thread+0x4f1/0xd60\n\nBefore commit 8e556432477e (\"eventfs: Use SRCU for freeing\neventfs_inodes\") release_ei() used call_rcu(), which covered the walker,\nwhile eventfs_iterate() needs the SRCU grace period. Wait for both and\nchain call_rcu() from the SRCU callback."}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"2ef3d120d19faba3dec35b10a025b00db0284373","status":"affected","lessThan":"5819018dc29fb2ac2fd4865d507f9893c89c0624","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"dd2c767814a876be0f16f0b7f98a403dc176f51e","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"4586ef24ce390e8becb9f3e5852d5d3978b01c33","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"45fcfd5d9c10e0aa977ed5b9bd445707e01bb107","versionType":"git"},{"version":"8e556432477e97ad6179c61b61a32bf5f1af2355","status":"affected","lessThan":"2cd88c498ecff8e22bf4c397b8eb226db70ac343","versionType":"git"},{"version":"384f383c5aa7bfd619d9f56a513a36e533428186","status":"affected","versionType":"git"},{"version":"6.6.46","status":"affected","lessThan":"6.6.161","versionType":"semver"},{"version":"6.10.5","status":"affected","lessThan":"6.11","versionType":"semver"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/tracefs/event_inode.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"6.11","status":"affected"},{"version":"0","status":"unaffected","lessThan":"6.11","versionType":"semver"},{"version":"6.6.161","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.115","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.59","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"7.2.13","status":"unaffected","lessThanOrEqual":"7.2.*","versionType":"semver"},{"version":"7.3","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["fs/tracefs/event_inode.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/5819018dc29fb2ac2fd4865d507f9893c89c0624"},{"url":"https://git.kernel.org/stable/c/dd2c767814a876be0f16f0b7f98a403dc176f51e"},{"url":"https://git.kernel.org/stable/c/4586ef24ce390e8becb9f3e5852d5d3978b01c33"},{"url":"https://git.kernel.org/stable/c/45fcfd5d9c10e0aa977ed5b9bd445707e01bb107"},{"url":"https://git.kernel.org/stable/c/2cd88c498ecff8e22bf4c397b8eb226db70ac343"}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-10-30T12:42:36.897Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.6.46","versionEndExcluding":"6.6.161"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.11","versionEndExcluding":"6.12.115"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.11","versionEndExcluding":"6.18.59"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.11","versionEndExcluding":"7.2.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.11","versionEndExcluding":"7.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.10.5"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}}}}}