Планируется ли впиливать такие костыли в ядро Linux, чтобы некоторые процессы можно было б запускать с запатченным от meltdown механизмом системных вызовов, а некоторые можно было б и с незапатченным?
Обычно память ядра замаплена в адресное пространство процесса, и суть этого meltdown в том, что можно спекулятивно эту память читать, а потом по времени доступа к какой-то другой памяти (из-за кэширования) косвенно определять, что именно прочиталось. И, если я все правильно понял, патч, закрывающий данную дыру, просто отключает маппинг памяти ядра в адресное пространство процесса, оставляя лишь некий минимальный функционал, которого достаточно чтобы опять замапить-размапить ядро в адресное пространство на время исполнения системного вызова. Так почему не сделать так, чтобы запускаемые от имени определенного пользователя процессы работали без этих защитных механизмов? Например, пускать postgresql без kpti, а всякие там браузеры уже с kpti т.к. они выполняют недоверенный код. Опция nopti
умеет только глобально эту защиту отключать для всех процессов.
Кроме того, некоторые сервера работают в пространстве ядра, nfs-kernel-server например. Если б можно было легко перенести postgresql в кернелспейс, там будет еще меньше накладных расходов т.к. не надо будет ring0<->ring3 переходов делать, как это происходит с обычными процессами.
Перемещено tailgunner из development