In the Linux kernel, the following vulnerability has been resolved:
tracing: Drain deferred trigger frees if kthread creation fails
Boot-time trigger registration can fail before the trigger-data cleanup kthread exists. Deferring those frees until late init is fine, but the post-boot fallback must still drain the deferred list if kthread creation never succeeds.
Otherwise, boot-deferred nodes can accumulate on triggerdatafree_list, later frees fall back to synchronously freeing only the current object, and the older queued entries are leaked forever.
To trigger this, add the following to the kernel command line:
traceevent=schedswitch tracetrigger=schedswitch.traceon,sched_switch.traceon
The second traceon trigger will fail and be freed. This triggers a NULL pointer dereference and crashes the kernel.
Keep the deferred boot-time behavior, but when kthread creation fails, drain the whole queued list synchronously. Do the same in the late-init drain path so queued entries are not stranded there either.
{
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31481.json",
"cna_assigner": "Linux"
}