Linux 5.12 kernel yatengera gawo la KFence kuti lizindikire zolakwika mukamagwira ntchito ndi kukumbukira.

Linux kernel 5.12, yomwe ikukula, ikuphatikiza kukhazikitsa njira ya KFence (Kernel Electric Fence), yomwe imayang'ana kukumbukira kukumbukira, kugwira ma buffer overruns, kukumbukira kukumbukira pambuyo pomasulidwa, ndi zolakwika zina za gulu lofanana.

Ntchito zofananira zinalipo kale mu kernel ngati njira yopangira ya KASAN (kernel address sanitizer, imagwiritsa ntchito Address Sanitizer mu gcc yamakono ndi clang) - komabe, idayikidwa makamaka kuti igwiritsidwe ntchito. Dongosolo la KFence limasiyana ndi KASAN pakuthamanga kwake, zomwe zimapangitsa kuti zitheke kugwiritsa ntchito izi ngakhale pama cores pamakina ogwirira ntchito.

Kugwiritsa ntchito pamakina opanga kupangitsa kuti zitheke zolakwa zamakumbukiro zomwe sizimawoneka pamayesero oyeserera ndipo zimangowoneka panthawi yolemetsa kapena pakugwira ntchito kwanthawi yayitali (ndi nthawi yayikulu). Kuphatikiza apo, kugwiritsa ntchito KFence pamakina opanga kupangitsa kuti ziwonjezeke kwambiri kuchuluka kwa makina omwe amayang'anira ntchito ya kernel ndi kukumbukira.

KFence imakwaniritsa kumtunda kochepa kodziyimira pawokha poyika masamba achitetezo mu muluwo pakapita nthawi. Nthawi yoteteza ikatha, KFence, kudzera munjira yogawa kukumbukira (SLAB kapena SLUB allocator), imawonjezera tsamba lotsatira lachitetezo kuchokera ku dziwe lachinthu la KFence, ndikuyamba lipoti latsopano lotsutsa. Chinthu chilichonse cha KFence chili patsamba losiyana la kukumbukira, ndipo masamba okumbukira kumanzere ndi kumanja amapanga masamba achitetezo, kukula kwake komwe kumasankhidwa mwachisawawa.

Chifukwa chake, masamba omwe ali ndi zinthu amasiyanitsidwa ndi masamba otetezedwa, omwe amakonzedwa kuti apange "tsamba lolakwika" pakupeza kulikonse. Kuti muzindikire zomwe zili m'malire mkati mwamasamba azinthu, "zone zofiira" zozikidwa pazithunzi zimagwiritsidwanso ntchito, zomwe zimakumbukira zomwe sizimagwiritsidwa ntchito ndi zinthu, zotsalira pomwe kukula kwa masamba amakumbukiro kumagwirizana. —+————+————+————————————————+—— | xxxxxxx | O: | xxxxxxx | : uwu | xxxxxxx | | | xxxxxxx | B: | xxxxxxx | :B | xxxxxxx | | | x MLINDI x | J: RED- | x MLINDI x | CHOFIIRA- : J | x MLINDI x | | | xxxxxxx | E: ZONE | xxxxxxx | ZONE: E | xxxxxxx | | | xxxxxxx | C: | xxxxxxx | :C | xxxxxxx | | | xxxxxxx | T: | xxxxxxx | :T | xxxxxxx | —+————+————+————————————————+—

Ngati kuyesayesa kuchitidwa kuti mufike kudera lomwe lili kunja kwa malire a buffer, ntchitoyi imakhudza tsamba lachitetezo, lomwe limatsogolera ku mbadwo wa "tsamba lolakwika", lomwe limasokoneza KFence ndikulemba zambiri za vuto lomwe lapezeka. Mwachikhazikitso, KFence sichiletsa cholakwika ndipo imangowonetsa chenjezo mu chipikacho, koma pali "panic_on_warn" yomwe imakulolani kuti muyike kernel mu chikhalidwe cha mantha ngati cholakwika chapezeka.

Source: opennet.ru

Kuwonjezera ndemanga