Don Linux 5.18 an tsara shi don matsar da lambar zuwa mafi kyawun sigar C don magance matsaloli daban-daban. 

Menene Linux kuma menene don?

A lokacin aiwatar da tattaunawar mai haɓakawa na Linux kernel game dal taken saitin faci don gyara vulnerabilities na Specter a cikin lambar don aiki tare da lissafin da aka haɗa, ya bayyana a sarari ga masu haɓakawa da yawa cewa matsalar za a iya warware shi mafi sauƙi idan an yarda a cikin lambar kernel C que ya dace da sabon sigar ma'auni. 

Kuma a halin yanzu lambar da aka ƙara zuwa Linux Kernel dole ne ta bi ƙayyadaddun ANSI C (C89), wanda aka kafa a cikin 1989.

Abin da ya sa kenan matsalar da ta shafi Specter a cikin code ya kasance saboda se ya ci gaba da yin amfani da maimaitawa bayyana daban bayan madauki.

Duk da yanayin saurin sa gabaɗaya, aikin kwaya ya dogara da tsofaffin kayan aikin. Yayin da masu suka suna son mayar da hankali kan yawan amfani da imel na al'umma, mai yuwuwa mafi mahimmanci anachronism shine amfani da sigar 1989 na ƙa'idar harshen C don lambar kwaya, ƙa'idar da aka tsara kafin aikin kernel ya fara sama da shekaru 30 da suka gabata. Yana kama da aikin da aka daɗe yana iya ƙarewa da zaran kernel 5.18, wanda ake tsammanin a watan Mayu na wannan shekara.

An ambata cewa Ana amfani da macro don maimaita abubuwan da ke cikin jerin abubuwan da aka haɗa, kuma tun da madaidaicin madauki ya wuce zuwa wannan macro, an bayyana shi a waje da madauki da kansa kuma ya kasance yana samuwa bayan madauki. Yin amfani da ma'auni na C99 zai ba masu haɓaka damar ayyana masu canji don madauki a cikin toshe () toshe, wanda zai magance matsalar ba tare da ƙirƙira hanyoyin warwarewa ba.

Abin takaici, akwai wurare da yawa a cikin kernel inda lissafin
Ana amfani da iterator bayan madauki wanda ya karye akan irin wannan canjin. Anyi sa'a
akwai rubutun use_after_iter.cocci wanda za'a iya amfani dashi don gano irin wannan
wuraren code. Dole ne in daidaita rubutun kadan yayin da yake rage karya
tabbatacce a cikin yanayin amfani na asali, amma waɗanda suka dace da wannan facin.

Babban nau'ikan wuraren lambar da aka ruwaito suna amfani ne kawai bayan mai maimaita lissafin
da sake zagayowar idan akwai wani wuri fita (break/goto) sabili da haka ba su
dacewa

A nasa bangaren, Linus Torvalds ya yarda da ra'ayin don samun damar aiwatar da tallafi don sabbin ƙayyadaddun bayanai kuma ƙara ba da shawarar motsawa akan kernel 5.18 don amfani da ma'aunin C11, wanda aka saki a cikin 2011.

Bayan haka, yayin tabbatarwa na farko, hawa zuwa GCC da Clang a cikin sabon yanayin ya wuce ba tare da karkacewa ba. Sai dai idan matsalolin da ba a yi tsammani ba sun taso saboda ƙarin gwaji mai yawa, rubutun kernel 5.18 zai canza zaɓin '–std=gnu89' zuwa '–std=gnu11 -Wno-shift-negative-value'.

Linus Torvalds bai son facin sosai kuma bai ga yadda yake da alaƙa da raunin kisa ba. Koyaya, bayan Koschel ya kara bayyana lamarin, Torvalds ya yarda cewa "wannan kwaro ne na yau da kullun, a sarari kuma mai sauƙi" kuma ya ce yakamata a gyara shi ba tare da la'akari da manyan jerin ba. Amma sai ya kai ga ainihin tushen matsalar: cewa mai haɓakawa ya wuce zuwa jerin macros ɗin dole ne a ayyana shi a cikin wani yanki a waje da madauki kanta:

Babban dalilin wannan nau'in kuskuren da ba a iya gani ba zai iya faruwa shine cewa a tarihi ba mu da salon C99 "bayyana masu canji a madaukai." Don haka list_for_each_entry() - da duk sauran - a koyaushe suna tace shigarwar HEAD na ƙarshe daga madauki, kawai saboda ba za mu iya bayyana ma'anar mai canzawa a cikin madauki kanta ba.

Hakanan yana da daraja a faɗi hakan An yi la'akari da yiwuwar amfani da ma'aunin C17, amma a wannan yanayin zai zama dole don ƙara ƙaramin goyan bayan sigar GCC, tunda haɗa tallafi don C11 ya dace da buƙatun yanzu don sigar GCC (5.1).

Finalmente idan kuna sha'awar ƙarin sani game da shi, zaku iya bincika cikakkun bayanai a cikin bin hanyar haɗi.


Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Alhakin bayanai: AB Internet Networks 2008 SL
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.