Linux 5.18 tuumiku plaanib lubada C keele C11 standardi kasutamist

Arutledes, mis käsitlevad Spectre klassi haavatavuste parandamiseks seotud patchide komplekti, selgus, et probleem oleks elegantsemalt lahendatav, kui tuumas lubataks kasutada uudsemat C keele standardit. Praegusel hetkel peab tuumakood vastama ANSI C (C89) spetsifikatsioonile, mis loodi juba 1989. aastal.

Spectre probleemi põhjustas eraldi defineeritud iteraatori jätkuv kasutamine tsükli järel — seotud loendi elementide iteratsiooniks kasutatakse makrot ning kuna tsükli iteraator edastatakse sellele makrole, määratletakse see tsüklist väljaspool ja jääb tsükli järel kätte saadavaks. C99 standardi kasutamine võimaldaks defineerida tsükliga seotud muutujad for() plokis, mis lahendaks probleemi ilma ringtee leidmiseta.

Linus Torvalds nõustus idee üle, et rakendada toetust uuematele spetsifikatsioonidele ja pakkus üleminekut tuumas 5.18 C11 standardile, mis avaldati 2011. aastal. Eelkontrolli käigus läbis GCC ja Clang uus režiim tõrgeteta. Kui põhjalikumate testide käigus ei ilmne ettenägematuid probleeme, asendatakse tuuma 5.18 ehitusskriptides valik '—std=gnu89' valikuga '—std=gnu11 -Wno-shift-negative-value'. Ka C17 standardi kasutamine oli kaalumisel, kuid sellisel juhul tuleks tõsta GCC minimaalset toetatud versiooni. C11 toe lisamine aga vastab olemasolevatele GCC versiooni nõuetele (5.1).

Allikas: opennet.ru

Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster