Linux 5.12 kjarninn hefur tekið upp KFence undirkerfið til að greina villur þegar unnið er með minni

Linux kjarninn 5.12, sem er í þróun, felur í sér útfærslu á KFence (Kernel Electric Fence) vélbúnaði, sem athugar meðhöndlun minni, grípur umframframkeyrslu á biðminni, minnisaðgang eftir losun og aðrar villur af svipuðum flokki.

Svipuð virkni var þegar til staðar í kjarnanum í formi KASAN byggingarvalkostsins (kernel address sanitizer, notar Address Sanitizer í nútíma gcc og clang) - hins vegar var hann staðsettur aðallega fyrir villuleit. KFence undirkerfið er frábrugðið KASAN í miklum rekstrarhraða, sem gerir það mögulegt að nota þennan eiginleika jafnvel á kjarna í vinnukerfum.

Umsókn á framleiðslukerfum mun gera það mögulegt að ná minnisvillum sem koma ekki fram í prufukeyrslum og birtast aðeins við vinnuálag eða við langtíma notkun (með miklum spennutíma). Að auki mun notkun KFence á framleiðslukerfum gera það mögulegt að fjölga verulega fjölda véla sem taka þátt í að athuga virkni kjarnans með minni.

KFence nær lágmarks álagsóháðum kostnaði með því að setja varnarsíður inn í hauginn með föstu millibili. Eftir að næsta verndartímabil er útrunnið, bætir KFence, í gegnum staðlaða minnisúthlutunarkerfið (SLAB eða SLUB úthlutun), næstu verndarsíðu úr KFence hlutasafninu og byrjar nýja tímateljaraskýrslu. Hver KFence hlutur er staðsettur á sérstakri minnissíðu og minnissíðurnar meðfram vinstri og hægri ramma mynda verndarsíður, stærð þeirra er valin af handahófi.

Þannig eru síður með hlutum aðskildar frá hver öðrum með verndarsíðum, sem eru stilltar til að mynda „síðuvillu“ við hvaða aðgang sem er. Til að greina skrif út fyrir mörk inni á hlutsíðum eru „rauð svæði“ sem byggjast á mynstri einnig notuð, sem taka upp minni sem hlutir nota ekki, sem eru eftir þegar stærð minnissíðunnar er samræmd. —+————+————+————+————+————+— | xxxxxxxx | Ó: | xxxxxxxx | :O | xxxxxxxx | | xxxxxxxx | B: | xxxxxxxx | :B | xxxxxxxx | | x VARÐUR x | J : RAUTT- | x VARÐUR x | RAUTT- : J | x VARÐUR x | | xxxxxxxx | E: SVÆÐI | xxxxxxxx | SVÆÐI: E | xxxxxxxx | | xxxxxxxx | C: | xxxxxxxx | :C | xxxxxxxx | | xxxxxxxx | T: | xxxxxxxx | : T | xxxxxxxx | —+————+————+————+————+————+—

Ef reynt er að fá aðgang að svæði utan biðminni, hefur aðgerðin áhrif á verndarsíðuna, sem leiðir til myndunar „síðuvillu“, sem grípur KFence og skráir upplýsingar um greint vandamál. Sjálfgefið er að KFence lokar ekki fyrir villu og sýnir aðeins viðvörun í skránni, en það er „panic_on_warn“ stilling sem gerir þér kleift að setja kjarnann í læti ef villa greinist.

Heimild: opennet.ru

Bæta við athugasemd