Во время [ обсуждения набора патчей ](
https://lore.kernel.org/lkml/20220224062022.GH3943@kadam/T/ ) , связанных с исправлением уязвимостей класса Spectre в коде для работы со связанными списками, стало ясно, что проблему удалось бы решить более изящно, если бы в ядро допускался код, использующий стандарт старше C89. Сейчас код в ядре должен соответствовать С89 (с GNU расширениями) на основе спецификации, сформированной ещё в 1989 году. Связанная со Spectre проблема была в том, что для перебора элементов списка используется макрос. Так как переменная цикла передаётся в этот макрос, то она определяется вне самого цикла и остаётся доступна после цикла. Использование более новых стандартов языка C позволит определять переменные для цикла прямо в блоке for. В связи с этим, Линус Торвальдс предложил попробовать перейти в ядре 5.18 на стандарт C99, который был опубликован в 1999 году, на что получил встречное предложение перейти сразу на C11. При проверке сборки в GCC и Clang с новым стандартом проблем пока не возникло и, если при более тщательном тестировании ситуация не изменится, в сборочных скриптах ядра 5.18 опция --std=gnu89 будет заменена на --std=gnu11 -Wno-shift-negative-value. В случае неудачи, переход будет отложен на один из следующих выпусков.
Ссылка:
https://www.linux.org.ru/news/kernel/16802885