Nel kernel di Linux 5.18 si prevede di permettere l'uso dello standard del linguaggio C C11

Durante la discussione sul set di patch per correggere i problemi di vulnerabilità della classe Spectre nel codice per la gestione delle liste collegate, è emerso che il problema potrebbe essere risolto in modo più elegante se nel kernel fosse consentito l'uso di codice in linguaggio C, conforme a una versione più recente dello standard. Attualmente, il codice che viene aggiunto al kernel deve rispettare la specifica ANSI C (C89), elaborata nel 1989.

Il problema relativo a Spectre nel codice è stato causato dal continuo utilizzo di un iteratore definito separatamente dopo il ciclo; per iterare sugli elementi di una lista collegata viene utilizzato un macro e, poiché l'iteratore del ciclo viene passato a questo macro, è definito al di fuori del ciclo stesso e rimane accessibile dopo di esso. L'uso dello standard C99 consentirebbe di definire variabili per il ciclo nel blocco for(), il che risolverebbe il problema senza dover inventare soluzioni alternative.

Linus Torvalds ha concordato sull'idea di implementare il supporto per versioni più recenti delle specifiche e ha proposto di passare nel kernel 5.18 all'uso dello standard C11, pubblicato nel 2011. In una verifica preliminare, la compilazione in GCC e Clang in modalità nuova è avvenuta senza problemi. Se durante i test più approfonditi non si presenteranno problemi imprevisti, negli script di compilazione del kernel 5.18 l'opzione ‘—std=gnu89’ sarà sostituita con ‘—std=gnu11 -Wno-shift-negative-value’. Si stava anche considerando la possibilità di utilizzare lo standard C17, ma in tal caso sarebbe stato necessario elevare la versione minima supportata di GCC. L'inclusione del supporto per C11 rientra nelle attuali richieste per la versione di GCC (5.1).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster