Kernel Linux 5.12 parantos ngadopsi subsistem KFence pikeun ngadeteksi kasalahan nalika damel sareng mémori

Kernel Linux Ubuntu 5.12, nu aya dina ngembangkeun, ngawengku hiji palaksanaan mékanisme KFence (Kernel Electric Pager), nu cek penanganan memori, catching panyangga overruns, aksés memori sanggeus freeing, sarta kasalahan séjén tina kelas sarupa.

Fungsionalitas anu sami parantos aya dina kernel dina bentuk pilihan ngawangun KASAN (sanitizer alamat kernel, nganggo Address Sanitizer dina gcc modern sareng clang) - kumaha oge, éta diposisikan utamina pikeun panggunaan debugging. Subsistem KFence béda ti KASAN dina laju operasi anu luhur, anu ngamungkinkeun pikeun ngagunakeun fitur ieu bahkan dina inti dina sistem kerja.

Aplikasi dina sistem produksi bakal ngamungkinkeun pikeun nyekel kasalahan mémori anu henteu muncul dina uji coba sareng ngan ukur muncul nalika beban kerja atanapi salami operasi jangka panjang (kalayan waktos anu ageung). Salaku tambahan, panggunaan KFence dina sistem produksi bakal ngamungkinkeun sacara signifikan ningkatkeun jumlah mesin anu aub dina mariksa operasi kernel kalayan mémori.

KFence ngahontal overhead bebas beban minimal ku cara ngalebetkeun halaman jaga kana tumpukan dina interval anu tetep. Saatos interval panyalindungan salajengna geus kadaluwarsa, KFence, ngaliwatan sistem alokasi memori baku (SLAB atanapi SLUB allocator), nambahkeun kaca panyalindungan hareup ti kolam renang objék KFence, tur mimitian laporan counter waktos anyar. Unggal obyék KFence lokasina dina kaca memori misah, sarta kaca memori sapanjang wates kénca jeung katuhu ngabentuk kaca hansip, ukuranana dipilih acak.

Ku kituna, kaca jeung objék anu dipisahkeun ti unggal lianna ku kaca panyalindungan, nu ngonpigurasi pikeun ngahasilkeun "kaca lepat" kana aksés nanaon. Pikeun ngadeteksi kaluar-of-wates nulis dina kaca objék, dumasar-pola "zona beureum" tambahan dipaké, nu nempatan mémori teu dipaké ku objék, sésana nalika ukuran kaca memori Blok. —+————+————+————+————+————+— | xxxxxxxxx | O: | xxxxxxxxx | : Atuh | xxxxxxxxx | | xxxxxxxxx | B: | xxxxxxxxx | :B | xxxxxxxxx | | x PENJAGA x | J : BEUREUM- | x PENJAGA x | BEureum- : J | x PENJAGA x | | xxxxxxxxx | E: ZONA | xxxxxxxxx | ZONA: E | xxxxxxxxx | | xxxxxxxxx | C: | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | T: | xxxxxxxxx | : T | xxxxxxxxx | —+————+————+————+————+————+—

Lamun usaha dilakukeun pikeun aksés ka wewengkon luar wates panyangga, operasi mangaruhan kaca panyalindungan, nu ngabalukarkeun generasi "kaca sesar", nu intercepts KFence na log informasi ngeunaan masalah dicirikeun. Sacara standar, KFence henteu meungpeuk kasalahan sareng ngan ukur nunjukkeun peringatan dina log, tapi aya setélan "panic_on_warn" anu ngamungkinkeun anjeun nempatkeun kernel kana kaayaan panik upami aya kasalahan.

sumber: opennet.ru

Tambahkeun komentar