CVE-2026-99093 in Linux
Sumário
de VulDB • 26/10/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
mm: não agende o liberação diferida das tabelas de página do kernel durante a inicialização (booting)
A inicialização com um rastreador de funções no momento do boot e um filtro, por exemplo
ftrace=function ftrace_filter=pud_free_pmd_page
causa panic na versão 7.3-rc4 assim que o rastreador é iniciado:
[ 23.531178] Starting tracer 'function'
[ 23.675800] Oops: general protection fault, probably for non-canonical address 0xdffffc0000000038: 0000 [#1] SMP KASAN NOPTI
[ 23.819917] KASAN: null-ptr-deref in range [0x00000000000001c0-0x00000000000001c7]
[ 23.964025] CPU: 0 UID: 0 PID: 0 Comm: swapper Not tainted 7.3.0-rc4-fe2ec83746e5-with-fixes-v2+ #195 PREEMPT(undef)
[ 24.252248] RIP: 0010:__queue_work+0xab/0xf00
[ 25.981629] Call Trace:
[ 26.125727] <TASK>
[ 26.413912] ? pagetable_free_kernel+0x20/0x120
[ 26.990283] queue_work_on+0x97/0xf0
[ 27.134382] __cpa_collapse_large_pages+0x501/0x6f0
[ 27.566662] cpa_flush+0x394/0x620
[ 27.998953] change_page_attr_set_clr+0x321/0x4a0
[ 29.151729] set_memory_rox+0xa2/0xf0
[ 29.584018] create_trampoline+0x431/0x6f0
... [ 44.343347] Kernel panic - not syncing: Attempted to kill the idle task!
O rastreador do boot é iniciado a partir de early_trace_init(), que executa antes workqueue_init_early(). Tornar seu trampoline read-only (somente leitura) divide uma página grande, e o CPA colapsa-a novamente imediatamente. A tabela dividida tem sido uma tabela de páginas do kernel desde o commit 9e4a3ec3411b ("x86/mm/pat: Allocate split page tables as kernel page tables"), então o collapse a libera através de pagetable_free_kernel(), que agenda trabalho em system_percpu_wq - ainda NULL nesse ponto. Esse commit está correto por si só; ele apenas permite que o CPA alcance pagetable_free_kernel() antes que a workqueue da qual essa função depende exista.
Continue colocando a tabela na lista, mas não agende o trabalho enquanto o sistema ainda estiver inicializando (booting). Um core_initcall agenda uma única vez para liberar qualquer coisa que tenha sido enfileirada até então.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.