I-Linux 5.12 kernel yamukele i-subsystem ye-KFence ukuthola amaphutha lapho isebenza ngenkumbulo.

I-Linux kernel 5.12, esakhiwayo, ihlanganisa ukuqaliswa komshini we-KFence (Kernel Electric Fence), ohlola ukuphathwa kwememori, ukubamba ukugcwala kwebhafa, ukufinyelela kwememori ngemva kokukhulula, namanye amaphutha ekilasi elifanayo.

Ukusebenza okufanayo bekuvele kukhona ku-kernel ngendlela yenketho yokwakha ye-KASAN (i-kernel address sanitizer, isebenzisa i-Address Sanitizer ku-gcc yesimanje kanye ne-clang) - nokho, ibibekwe ikakhulukazi ukusetshenziswa kokulungisa iphutha. I-subsystem ye-KFence ihlukile ku-KASAN ngesivinini sayo esiphezulu sokusebenza, okwenza kube nokwenzeka ukusebenzisa lesi sici ngisho nakuma-cores kumasistimu okusebenza.

Uhlelo lokusebenza kumasistimu okukhiqiza luzokwenza kube nokwenzeka ukubamba amaphutha enkumbulo angaveli ekugijimeni kokuhlola futhi avele kuphela phakathi nomthwalo wokusebenza noma phakathi nokusebenza kwesikhathi eside (ngesikhathi esikhulu sokuphumula). Ngaphezu kwalokho, ukusetshenziswa kwe-KFence ezinhlelweni zokukhiqiza kuzokwenza kube lula ukwandisa inani lemishini ehilelekile ekuhloleni ukusebenza kwe-kernel ngenkumbulo.

I-KFence ifinyelela phezulu okuncane okuzimele komthwalo ngokufaka amakhasi onogada enqwabeni ngezikhathi ezithile. Ngemva kokuba isikhawu sokuvikela esilandelayo siphelelwe yisikhathi, i-KFence, ngohlelo olujwayelekile lokwabiwa kwenkumbulo (i-SLAB noma isabi se-SLUB), yengeza ikhasi elilandelayo lokuvikela elisuka ku-pool yento ye-KFence, bese iqala umbiko omusha wokubala wesikhathi. Into ngayinye ye-KFence itholakala ekhasini lenkumbulo elihlukile, futhi amakhasi enkumbulo aseduze nemingcele yesokunxele nesokudla akha amakhasi onogada, ubukhulu bawo obukhethwa ngokungahleliwe.

Ngakho-ke, amakhasi anezinto ahlukaniswa ngamanye ngamakhasi okuvikela, alungiselelwe ukukhiqiza "iphutha lekhasi" kunoma yikuphi ukufinyelela. Ukuze uthole okubhalwe ngaphandle komngcele ngaphakathi kwamakhasi ezinto, "izindawo ezibomvu" ezisuselwe kwiphethini ziyasetshenziswa futhi, ezithatha inkumbulo engasetshenziswanga izinto, ezisalayo lapho usayizi wamakhasi ememori uqondanisiwe. —+————+————+————+—————+—————+—— | xxxxxxxxx | O: | xxxxxxxxx | :O | xxxxxxxxx | | xxxxxxxxx | B: | xxxxxxxxx | :B | xxxxxxxxx | | x UMLINDI x | J : RED- | x UMLINDI x | RED- : J | x UMLINDI x | | xxxxxxxxx | E: INDAWO | xxxxxxxxx | INDAWO: E | xxxxxxxxx | | xxxxxxxxx | C: | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | T: | xxxxxxxxx | : T | xxxxxxxxx | —+————+————+————————————————+—

Uma kwenziwa umzamo wokufinyelela endaweni engaphandle kwemingcele ye-buffer, ukusebenza kuthinta ikhasi lokuvikela, okuholela ekukhiqizeni "iphutha lekhasi", elinqamula i-KFence futhi lilobe ulwazi mayelana nenkinga ekhonjiwe. Ngokuzenzakalelayo, i-KFence ayilivimbi iphutha futhi ibonisa isexwayiso kulogi kuphela, kodwa kunesilungiselelo esithi “panic_on_warn” esikuvumela ukuthi ubeke i-kernel esimweni sokwethuka uma iphutha litholwa.

Source: opennet.ru

Engeza amazwana