Mae'r cnewyllyn Linux 5.12 wedi mabwysiadu'r is-system KFence i ganfod gwallau wrth weithio gyda'r cof

Mae cnewyllyn Linux 5.12, sy'n cael ei ddatblygu, yn cynnwys gweithredu mecanwaith KFence (Kernel Electric Fence), sy'n gwirio trin cof, dal gor-redeg byffer, mynediad cof ar ôl rhyddhau, a gwallau eraill o ddosbarth tebyg.

Roedd ymarferoldeb tebyg eisoes yn bresennol yn y cnewyllyn ar ffurf opsiwn adeiladu KASAN (glanweithydd cyfeiriad cnewyllyn, yn defnyddio Address Sanitizer mewn gcc modern a clang) - fodd bynnag, fe'i lleolwyd yn bennaf ar gyfer defnydd dadfygio. Mae is-system KFence yn wahanol i KASAN yn ei gyflymder gweithredu uchel, sy'n ei gwneud hi'n bosibl defnyddio'r nodwedd hon hyd yn oed ar greiddiau mewn systemau gweithio.

Bydd cymhwyso ar systemau cynhyrchu yn ei gwneud hi'n bosibl dal gwallau cof nad ydyn nhw'n ymddangos mewn rhediadau prawf ac sy'n ymddangos yn ystod llwythi gwaith neu yn ystod gweithrediad hirdymor yn unig (gydag uptime mawr). Yn ogystal, bydd defnyddio KFence ar systemau cynhyrchu yn ei gwneud hi'n bosibl cynyddu'n sylweddol nifer y peiriannau sy'n ymwneud â gwirio gweithrediad y cnewyllyn â chof.

Mae KFence yn cyflawni ychydig iawn o orbenion llwyth-annibynnol trwy fewnosod tudalennau gwarchod yn y domen ar gyfnodau sefydlog. Ar ôl i'r cyfwng amddiffyn nesaf ddod i ben, mae KFence, trwy'r system dyrannu cof safonol (SLAB neu SLUB allocator), yn ychwanegu'r dudalen amddiffyn nesaf o gronfa gwrthrychau KFence, ac yn dechrau adroddiad cownter amser newydd. Mae pob gwrthrych KFence wedi'i leoli mewn tudalen cof ar wahân, ac mae'r tudalennau cof ar hyd yr ymylon chwith a dde yn ffurfio tudalennau gwarchod, y mae eu maint yn cael ei ddewis ar hap.

Felly, mae tudalennau â gwrthrychau yn cael eu gwahanu oddi wrth ei gilydd gan dudalennau amddiffyn, sy'n cael eu ffurfweddu i gynhyrchu “bai tudalen” ar unrhyw fynediad. I ganfod ysgrifen y tu allan i ffiniau y tu mewn i dudalennau gwrthrych, defnyddir “parthau coch” ar sail patrwm hefyd, sy'n meddiannu cof na chaiff ei ddefnyddio gan wrthrychau, sy'n weddill pan fydd maint y tudalennau cof wedi'u halinio. —+———+————+————+————+————+— | xxxxxxxxx | O : | xxxxxxxxx | :O | xxxxxxxxx | | xxxxxxxxx | B : | xxxxxxxxx | :B | xxxxxxxxx | | x GUARD x | J : COCH- | x GUARD x | COCH- :J | x GUARD x | | xxxxxxxxx | E: PARTH | xxxxxxxxx | PARTH : E | xxxxxxxxx | | xxxxxxxxx | C: | xxxxxxxxx | :C | xxxxxxxxx | | xxxxxxxxx | T : | xxxxxxxxx | : T | xxxxxxxxx | —+————+———+————+———+————+—

Os gwneir ymgais i gael mynediad i ardal y tu allan i ffiniau'r byffer, mae'r llawdriniaeth yn effeithio ar y dudalen amddiffyn, sy'n arwain at greu “bai tudalen”, sy'n rhyng-gipio KFence ac yn cofnodi gwybodaeth am y broblem a nodwyd. Yn ddiofyn, nid yw KFence yn rhwystro gwall a dim ond yn dangos rhybudd yn y log, ond mae gosodiad “panic_on_warn” sy'n eich galluogi i roi'r cnewyllyn mewn cyflwr panig os canfyddir gwall.

Ffynhonnell: opennet.ru

Ychwanegu sylw