Ua hoʻohana ka Linux 5.12 kernel i ka KFence subsystem e ʻike i nā hewa ke hana me ka hoʻomanaʻo

ʻO ka Linux kernel 5.12, ka mea i kūkulu ʻia, e komo pū ana me ka hoʻokō ʻana i ka mīkini KFence (Kernel Electric Fence), e nānā ana i ka mālama ʻana i ka hoʻomanaʻo, ka hopu ʻana i ka buffer overruns, ke komo ʻana i ka hoʻomanaʻo ma hope o ka hoʻokuʻu ʻana, a me nā hewa ʻē aʻe o kahi papa like.

Aia nā hana like i loko o ka kernel ma ke ʻano o ke koho kūkulu KASAN (kernel address sanitizer, hoʻohana i ka Address Sanitizer i ka gcc hou a me ka clang) - akā naʻe, ua hoʻonohonoho ʻia no ka hoʻohana debugging. ʻOkoʻa ka subsystem KFence mai KASAN i kona wikiwiki hana kiʻekiʻe, e hiki ai ke hoʻohana i kēia hiʻohiʻona a hiki i nā cores i nā ʻōnaehana hana.

ʻO ka hoʻohana ʻana i nā ʻōnaehana hana e hiki ai ke hopu i nā hewa hoʻomanaʻo ʻaʻole i ʻike ʻia i nā holo hoʻāʻo a ʻike wale ʻia i ka wā o ka hana a i ʻole i ka wā lōʻihi o ka hana (me ka uptime nui). Eia kekahi, ʻo ka hoʻohana ʻana o KFence ma nā ʻōnaehana hana e hiki ai ke hoʻonui nui i ka nui o nā mīkini i komo i ka nānā ʻana i ka hana o ka kernel me ka hoʻomanaʻo.

Loaʻa iā KFence ka liʻiliʻi o ka haʻahaʻa kūʻokoʻa ma luna o ke poʻo ma o ka hoʻokomo ʻana i nā ʻaoʻao kiaʻi i loko o ka puʻu i nā manawa paʻa. Ma hope o ka pau ʻana o ka wā pale aʻe, hoʻohui ʻo KFence, ma o ka ʻōnaehana hoʻomanaʻo hoʻomanaʻo maʻamau (SLAB a i ʻole SLUB allocator), hoʻohui i ka ʻaoʻao pale aʻe mai ka waihona mea KFence, a hoʻomaka i kahi hōʻike counter manawa hou. Aia kēlā me kēia mea KFence i loko o kahi ʻaoʻao hoʻomanaʻo ʻokoʻa, a ʻo nā ʻaoʻao hoʻomanaʻo ma ka ʻaoʻao hema a me ka ʻākau e hana i nā ʻaoʻao kiaʻi, ʻo ka nui o ia mea i koho ʻole ʻia.

No laila, ua hoʻokaʻawale ʻia nā ʻaoʻao me nā mea mai kekahi i kekahi e nā ʻaoʻao palekana, i hoʻonohonoho ʻia e hana i kahi "ʻaoʻao hewa" ma luna o kahi komo. No ka ʻike ʻana i ke kākau ʻana ma waho o ka palena i loko o nā ʻaoʻao mea, hoʻohana ʻia nā "ʻāpana ʻulaʻula" e pili ana i ke ʻano, e noho ana i ka hoʻomanaʻo ʻaʻole i hoʻohana ʻia e nā mea, e koe ana i ka wā e kūlike ai ka nui o nā ʻaoʻao hoʻomanaʻo. —+————+————+————+————+————+— | xxxxxxxxx | O: | xxxxxxxxx | :O | xxxxxxxxx | | xxxxxxxxx | B: | xxxxxxxxx | :B | xxxxxxxxx | | x KAHAI x | J : ULAULA- | x KAHAI x | ULAULA- : J | x KAHAI x | | xxxxxxxxx | E: ZONE | xxxxxxxxx | AINA: E | xxxxxxxxx | | xxxxxxxxx | C: | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | T: | xxxxxxxxx | : T | xxxxxxxxx | —+————+————+————+————+————+—

Inā hoʻāʻo ʻia e komo i kahi wahi ma waho o nā palena buffer, pili ka hana i ka ʻaoʻao pale, kahi e alakaʻi ai i ka hoʻokumu ʻana i kahi "ʻaoʻao hewa", e hoʻopili iā KFence a hoʻopaʻa i ka ʻike e pili ana i ka pilikia i ʻike ʻia. Ma ka maʻamau, ʻaʻole ʻae ʻo KFence i kahi hewa a hōʻike wale i kahi ʻōlelo aʻo i loko o ka log, akā aia kahi "panic_on_warn" hoʻonohonoho e hiki ai iā ʻoe ke hoʻokomo i ka kernel i kahi kūlana panic inā ʻike ʻia kahi hewa.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka