Linux 5.12 kernel e amohetse subsystem ea KFence ho bona liphoso ha o sebetsa ka mohopolo.

Linux kernel 5.12, e ntseng e tsoela pele, e kenyelletsa ts'ebetsong ea mochine oa KFence (Kernel Electric Fence), o hlahlobang ho tšoara mohopolo, ho tšoara li-buffer overruns, ho fihlella mohopolo ka mor'a ho lokolloa, le liphoso tse ling tsa sehlopha se tšoanang.

Ts'ebetso e ts'oanang e ne e se e ntse e le teng ka har'a kernel ka mokhoa oa khetho ea KASAN (kernel address sanitizer, e sebelisa Address Sanitizer ka gcc le clang ea sejoale-joale) - leha ho le joalo, e ne e behiloe haholo bakeng sa ts'ebeliso ea debugging. The KFence subsystem e fapane le KASAN ka lebelo le phahameng la ts'ebetso, e leng se etsang hore ho khonehe ho sebelisa tšobotsi ena esita le ho li-cores lits'ebetsong tse sebetsang.

Kopo ho litsamaiso tsa tlhahiso e tla etsa hore ho khonehe ho tšoara liphoso tsa memori tse sa bonahaleng litekong tsa liteko mme li hlahe feela nakong ea mojaro oa mosebetsi kapa nakong ea ts'ebetso ea nako e telele (ka nako e kholo). Ho phaella moo, tšebeliso ea KFence tsamaisong ea tlhahiso e tla etsa hore ho khonehe ho eketsa haholo palo ea mechine e amehang ho hlahloba ts'ebetso ea kernel ka mohopolo.

KFence e fihlella karolo e tlase e ikemetseng e ikemetseng ka ho kenya maqephe a balebeli ka har'a qubu ka linako tse itseng. Kamora hore nako e latelang ea ts'ireletso e felile, KFence, ka sistimi e tloaelehileng ea kabo ea memori (SLAB kapa SLUB allocator), e eketsa leqephe le latelang la ts'ireletso ho tsoa letamong la ntho ea KFence, 'me e qala tlaleho e ncha ea khaontara ea nako. Ntho e 'ngoe le e' ngoe ea KFence e teng leqepheng le arohaneng la memori, 'me maqephe a memori a haufi le moeli o ka letsohong le letšehali le le letona a theha maqephe a balebeli, boholo ba bona bo khethoa ka mokhoa o sa reroang.

Ka hona, maqephe a nang le lintho a arohanngoa ho e mong ka maqephe a tšireletso, a lokiselitsoeng ho hlahisa "phoso ea leqephe" holim'a phihlello efe kapa efe. Ho bona ho ngola ka ntle ho moeli ka har'a maqephe a ntho, "libaka tse khubelu" tse thehiloeng ho mohlala li sebelisoa hape, tse bolokang mohopolo o sa sebelisoeng ke lintho, tse setseng ha boholo ba maqephe a memori a hokahantsoe. —+————+————+————+———————————+—— | xxxxxxxx | O: | xxxxxxxx | :O | xxxxxxxx | | xxxxxxxx | B: | xxxxxxxx | :B | xxxxxxxx | | x MOLEBELI x | J : RED- | x MOLEBELI x | RED- : J | x MOLEBELI x | | xxxxxxxx | E: SEBAKA | xxxxxxxx | Sebaka: E | xxxxxxxx | | xxxxxxxx | C: | xxxxxxxx | :C | xxxxxxxx | | xxxxxxxx | T: | xxxxxxxx | : T | xxxxxxxx | —+————+————+—————+————+—————+—

Haeba ho etsoa boiteko ba ho fumana sebaka se ka ntle ho meeli ea buffer, ts'ebetso e ama leqephe la tšireletso, e leng se lebisang molokong oa "phoso ea leqephe", e thibelang KFence le ho boloka tlhahisoleseding mabapi le bothata bo fumanoeng. Ka nako e sa lekanyetsoang, KFence ha e thibele phoso 'me e bontša temoso feela ka har'a log, empa ho na le "panic_on_warn" e u lumellang hore u behe kernel boemong ba ho tšoha haeba phoso e fumanoa.

Source: opennet.ru

Eketsa ka tlhaloso