Linux Kernel 5.18 plangt d'Benotzung vum C Sproochstandard C11 z'erméiglechen

Wärend engem Set vu Patches diskutéiert gouf fir Specter-relatéiert Probleemer am verlinkte Lëschtcode ze fixéieren, gouf et kloer datt de Problem méi graziéis geléist ka ginn wann C Code dee mat enger méi neier Versioun vum Standard entsprécht an de Kernel erlaabt ass. De Moment muss den zousätzleche Kernelcode mat der ANSI C (C89) Spezifizéierung entspriechen, geformt am Joer 1989.

E Spectre-relatéierte Problem am Code gouf verursaacht duerch déi weider Notzung vun engem separat definéierten Iterator no der Loop - e Makro gëtt benotzt fir iwwer d'Elementer vun enger verlinkter Lëscht ze iteréieren, a well de Loop Iterator an dee Makro passéiert ass, ass et ausserhalb vun der Loop selwer definéiert a bleift no der Loop verfügbar. D'Benotzung vum C99 Standard erlaabt datt Loopvariablen an engem for () Block definéiert ginn, wat de Problem léisen ouni mat Léisungen ze kommen.

De Linus Torvalds ass averstanen mat der Iddi fir Ënnerstëtzung fir méi nei Spezifikatioune ëmzesetzen a proposéiert de 5.18 Kernel ze bewegen fir den C11 Standard ze benotzen, publizéiert am 2011. Wärend der virleefeg iwwerpréift ass d'Versammlung am GCC a Clang am neie Modus ouni Ofwäichunge passéiert. Wann keng onerwaart Problemer während méi grëndlech Tester entstinn, gëtt d'--std=gnu5.18'Optioun an de 89 Kernel Build Scripten duerch '--std=gnu11 -Wno-shift-negative-value' ersat. D'Méiglechkeet fir de C17 Standard ze benotzen gouf och berücksichtegt, awer an dësem Fall wier et néideg fir de Minimum ënnerstëtzt Versioun vum GCC ze erhéijen. D'Inklusioun vu C11 Support passt an déi aktuell Ufuerderunge fir d'GCC Versioun (5.1).

Source: opennet.ru

Setzt e Commentaire