CVE-2026-98551 in Linux
Riassunto
di VulDB • 19/10/2026
Nel kernel Linux è stata risolta la seguente vulnerabilità:
perf/core: Compilare le voci del branch con un'unica assegnazione
La funzione perf_clear_branch_entry_bitfields() cancella i bitfield di struct perf_branch_entry uno per uno, lasciando invariati from/to, poiché i chiamanti li sovrascrivono immediatamente. L'elenco deve essere mantenuto sincronizzato manualmente rispetto alla struct ed è già risultato obsoleto: new_type e priv sono stati aggiunti a perf_branch_entry ma non sono mai stati inseriti qui.
Solo BRBE scrive questi due campi, e non per ogni record. brbe_set_perf_entry_type() lascia invariato new_type per un tipo di branch che non riconosce, e priv non è impostata per i record solo sorgente (source-only). arm_pmuv3.c alloca lo stack dei branch per-CPU con kmalloc(), quindi tale record raggiunge l'userspace contenendo qualsiasi valore precedentemente presente nello slot: dati non inizializzati da kmalloc() al primo passaggio sul buffer, valori del record precedente in seguito. Nessun codice sotto arch/x86/events/ scrive nessuno di questi due campi, pertanto solo arm64 è interessato.
Effettuare invece un'unica assegnazione dell'intera entry in ciascun punto. Tutto ciò che non viene nominato esplicitamente sarà quindi azzerato e non vi sarà alcun elenco da mantenere sincronizzato. I bitfield sommano esattamente 64 bit, quindi la struct non presenta padding con valori indefiniti.
perf_clear_branch_entry_bitfields() non ha più chiamanti residui, pertanto va rimossa. perf_entry_from_brbe_regset() assegna un letterale vuoto al suo posto, poiché compila from/to in modo condizionale. PERF_BR_SPEC_NA è 0, quindi l'eliminazione dell'assegnazione esplicita di spec non cambia nulla.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.