Názor k článku Nový vývoj kolem Spectre a Meltdown a naštvaný Linus Torvalds od Martin Dráb - > if (root) { *(0x0) = 1 }. Vzhledem...

  • Článek je starý, nové názory již nelze přidávat.
  • 9. 1. 2018 12:45

    Martin Dráb
    Stříbrný podporovatel

    > if (root) { *(0x0) = 1 }.

    Vzhledem k tomu, že do Ring 0 se dnešní OS (už velmi dlouho) dostávají skrz instrukce syscall/sysenter, popř. softwarovým přerušením, podle mě by opravdu nevadilo, kdyby si procesor někde pamatoval příznak, v jakém režimu běží, a to takovým způsobem, že by jej bylo možné použít i při spekulativním vykonávání instrukcí (jelikož jej není třeba často aktualizovat).

    > TLB

    Ano, spravuje jej zejména MMU (a trochu OS, když mění stránkovací tabulky). Můj point byl ten, že kódy, které jsem viděl, obvykle předtím, než provedou Meltdown, se příslušné paměti dotknou (např. vhodným systémovým voláním), než "spustí maškarádu". Takže mají v podstatě jistotu, že potřebný překlad v TLB bude. Ale tímhle způsobem se nedá dostat k celé namapované fyzické paměti (nějak deterministicky).

    Ale možná, že při (nespekulativním) přístupu na kernelovou adresu procesor TLB mění, kdežto při spekulativním vykonávání přístupu na adresu, na kterou oprávnění má (můj test), se nic do TLB nepřidává.