ะ ัะพััะฐะฒ ะฝะฐั ะพะดััะตะณะพัั ะฒ ัะฐะทัะฐะฑะพัะบะต ัะดัะฐ Linux 5.12 ะฒะบะปััะตะฝะฐ ัะตะฐะปะธะทะฐัะธั ะผะตั ะฐะฝะธะทะผะฐ KFence (Kernel Electric Fence), ะบะพัะพััะน ะฟัะพะฒะตััะตั ัะฐะฑะพัั ั ะฟะฐะผัััั, ะพัะปะฐะฒะปะธะฒะฐั ะฒัั ะพะด ะทะฐ ะณัะฐะฝะธัั ะฑััะตัะพะฒ, ะพะฑัะฐัะตะฝะธั ะบ ะฟะฐะผััะธ ะฟะพัะปะต ะพัะฒะพะฑะพะถะดะตะฝะธั ะธ ะดััะณะธะต ะพัะธะฑะบะธ ะฟะพะดะพะฑะฝะพะณะพ ะบะปะฐััะฐ.
ะะพะดะพะฑะฝะฐั ััะฝะบัะธะพะฝะฐะปัะฝะพััั ัะถะต ะฟัะธัััััะฒะพะฒะฐะปะฐ ะฒ ัะดัะต ะฒ ะฒะธะดะต ะพะฟัะธะธ ัะฑะพัะบะธ KASAN (kernel address sanitizer, ะธัะฟะพะปัะทัะตั Address Sanitizer ะฒ ัะพะฒัะตะผะตะฝะฝัั gcc ะธ clang) โ ะพะดะฝะฐะบะพ ะฟะพะทะธัะธะพะฝะธัะพะฒะฐะปะฐัั ะฒ ะพัะฝะพะฒะฝะพะผ ะดะปั ะพัะปะฐะดะพัะฝะพะณะพ ะฟัะธะผะตะฝะตะฝะธั. ะะพะดัะธััะตะผะฐ KFence ะพัะปะธัะฐะตััั ะพั KASAN ะฒััะพะบะพะน ัะบะพัะพัััั ัะฐะฑะพัั, ััะพ ะฟะพะทะฒะพะปัะตั ะธัะฟะพะปัะทะพะฒะฐัั ััั ะฒะพะทะผะพะถะฝะพััั ะดะฐะถะต ะฝะฐ ัะดัะฐั ะฒ ัะฐะฑะพัะธั ัะธััะตะผะฐั .
ะัะธะผะตะฝะตะฝะธะต ะฝะฐ ัะฐะฑะพัะธั ัะธััะตะผะฐั ะดะฐัั ะฒะพะทะผะพะถะฝะพััั ะพัะปะฐะฒะปะธะฒะฐัั ะพัะธะฑะบะธ ัะฐะฑะพัั ั ะฟะฐะผัััั, ะบะพัะพััะต ะฝะต ะฟัะพัะฒะปััััั ะฒ ัะตััะพะฒัั ะทะฐะฟััะบะฐั ะธ ะฒัะฟะปัะฒะฐัั ัะพะปัะบะพ ะฝะฐ ัะฐะฑะพัะธั ะฝะฐะณััะทะบะฐั ะธะปะธ ะฟัะธ ะดะปะธัะตะปัะฝะพะน ัะฐะฑะพัะต (ะฟัะธ ะฑะพะปััะพะผ uptime). ะัะพะผะต ัะพะณะพ, ะฟัะธะผะตะฝะตะฝะธะต KFence ะฝะฐ ัะฐะฑะพัะธั ัะธััะตะผะฐั ะดะฐัั ะฒะพะทะผะพะถะฝะพััั ัััะตััะฒะตะฝะฝะพ ัะฒะตะปะธัะธัั ัะธัะปะพ ะผะฐัะธะฝ, ะฒะพะฒะปะตััะฝะฝัั ะฒ ะฟัะพะฒะตัะบั ัะฐะฑะพัั ัะดัะฐ ั ะฟะฐะผัััั.
ะะธะฝะธะผะฐะปัะฝัะต ะฝะฐะบะปะฐะดะฝัะต ัะฐัั ะพะดั, ะฝะต ะทะฐะฒะธัััะธะต ะพั ะฝะฐะณััะทะบะธ, ะดะพััะธะณะฐัััั ะฒ KFence ะฑะปะฐะณะพะดะฐัั ะฟะพะดััะฐะฝะพะฒะบะต ัััะฐะฝะธั ะทะฐัะธัั (guard pages) ะฒ ะบััั ัะตัะตะท ัะธะบัะธัะพะฒะฐะฝะฝัะต ะธะฝัะตัะฒะฐะปั. ะะพัะปะต ะธััะตัะตะฝะธั ะฒัะตะผะตะฝะธ ะพัะตัะตะดะฝะพะณะพ ะธะฝัะตัะฒะฐะปะฐ ะทะฐัะธัั KFence ัะตัะตะท ััะฐัะฝัั ัะธััะตะผั ัะฐัะฟัะตะดะตะปะตะฝะธั ะฟะฐะผััะธ (SLAB ะธะปะธ SLUB allocator) ะดะพะฑะฐะฒะปัะตั ะพัะตัะตะดะฝัั ัััะฐะฝะธัั ะทะฐัะธัั ะธะท ะฟัะปะฐ ะพะฑัะตะบัะพะฒ KFence, ะธ ะฝะฐัะธะฝะฐะตั ะฝะพะฒัะน ะพัััั ัััััะธะบะฐ ะฒัะตะผะตะฝะธ. ะะฐะถะดัะน ะพะฑัะตะบั KFence ัะฐะทะผะตัะฐะตััั ะฒ ะพัะดะตะปัะฝะพะน ัััะฐะฝะธัะต ะฟะฐะผััะธ, ะฐ ัััะฐะฝะธัั ะฟะฐะผััะธ ะฟะพ ะปะตะฒะพะน ะธ ะฟัะฐะฒะพะน ะณัะฐะฝะธัะต ะพะฑัะฐะทััั ัััะฐะฝะธัั ะทะฐัะธัั (guard pages), ัะฐะทะผะตั ะบะพัะพััั ะฒัะฑะธัะฐะตััั ัะปััะฐะนะฝะพ.
ะขะฐะบะธะผ ะพะฑัะฐะทะพะผ, ัััะฐะฝะธัั ั ะพะฑัะตะบัะฐะผะธ ะพัะดะตะปััััั ะดััะณ ะพั ะดััะณะฐ ัััะฐะฝะธัะฐะผะธ ะทะฐัะธัั, ะบะพัะพััะต ะฝะฐัััะฐะธะฒะฐัััั ะฝะฐ ะณะตะฝะตัะฐัะธั ยซpage faultยป ะฟัะธ ะปัะฑะพะผ ะพะฑัะฐัะตะฝะธะธ. ะะปั ะฒััะฒะปะตะฝะธั ะพะฟะตัะฐัะธะน ะทะฐะฟะธัะธ ะทะฐ ะณัะฐะฝะธัั ะฑััะตัะฐ ะฒะฝัััะธ ัััะฐะฝะธั ั ะพะฑัะตะบัะฐะผะธ ะดะพะฟะพะปะฝะธัะตะปัะฝะพ ะธัะฟะพะปัะทััััั ยซะบัะฐัะฝัะต ะทะพะฝัยป ะฝะฐ ะพัะฝะพะฒะต ัะฐะฑะปะพะฝะพะฒ, ะบะพัะพััะต ะทะฐะฝะธะผะฐัั ะฟะฐะผััั, ะฝะต ะธัะฟะพะปัะทัะตะผัั ะพะฑัะตะบัะฐะผะธ, ะพััะฐัััััั ะฟัะธ ะฒััะฐะฒะฝะธะฒะฐะฝะธะธ ัะฐะทะผะตัะฐ ัััะฐะฝะธั ะฟะฐะผััะธ. โ+โโโโ+โโโโ+โโโโ+โโโโ+โโโโ+โ | xxxxxxxxx | O : | xxxxxxxxx | : O | xxxxxxxxx | | xxxxxxxxx | B : | xxxxxxxxx | : B | xxxxxxxxx | | x GUARD x | J : RED- | x GUARD x | RED- : J | x GUARD x | | xxxxxxxxx | E : ZONE | xxxxxxxxx | ZONE : E | xxxxxxxxx | | xxxxxxxxx | C : | xxxxxxxxx | : C | xxxxxxxxx | | xxxxxxxxx | T : | xxxxxxxxx | : T | xxxxxxxxx | โ+โโโโ+โโโโ+โโโโ+โโโโ+โโโโ+โ
ะ ัะปััะฐะต ะฟะพะฟััะบะธ ะพะฑัะฐัะตะฝะธั ะบ ะพะฑะปะฐััะธ ะฒะฝะต ะณัะฐะฝะธั ะฑััะตัะฐ ะพะฟะตัะฐัะธั ะทะฐััะฐะณะธะฒะฐะตั ัััะฐะฝะธัั ะทะฐัะธัั, ััะพ ะฟัะธะฒะพะดะธั ะบ ะณะตะฝะตัะฐัะธะธ ยซpage faultยป, ะบะพัะพััะน ะฟะตัะตั
ะฒะฐััะฒะฐะตั KFence ะธ ะฒัะฒะพะดะธั ะฒ ะปะพะณ ะดะฐะฝะฝัะต ะพ ะฒััะฒะปะตะฝะฝะพะน ะฟัะพะฑะปะตะผะต. ะะพ ัะผะพะปัะฐะฝะธั KFence ะฝะต ะฑะปะพะบะธััะตั ะพัะธะฑะบั ะธ ะปะธัั ะฒัะฒะพะดะธั ะฟัะตะดัะฟัะตะถะดะตะฝะธะต ะฒ ะปะพะณ, ะฝะพ ะฟัะตะดััะผะพััะตะฝะฐ ะฝะฐัััะพะนะบะฐ ยซpanic_on_warnยป, ะฟะพะทะฒะพะปัััะฐั ะฒ ัะปััะฐะต ะฒััะฒะปะตะฝะธั ะพัะธะฑะบะธ ะฟะตัะตะฒะพะดะธัั ัะดัะพ ะฒ ัะพััะพัะฝะธะต ะบัะฐั
ะฐ (panic).
เปเบซเบผเปเบเบเปเปเบกเบนเบ: opennet.ru