Для чего используется системный вызов mincore в пользовательских приложениях? - PullRequest
0 голосов
/ 24 января 2020

Для чего Linux 'mincore(2) полезно в пользовательских приложениях? Почему он недоступен непривилегированным пользователям?

Я могу представить, что в некоторых базах данных используется информация о том, какие страницы кэшируются, но какие еще примеры?

1 Ответ

1 голос
/ 24 января 2020

Что Linux mincore(2) полезно для пользовательских приложений?

Я бы сказал, что это, скорее всего, основано на мнении. На ум приходят профилирование, статистика, оценка производительности и тому подобное. Кроме этого, я не могу думать о других реалистичных случаях использования.

Вот несколько примеров программ, которые я обнаружил, которые используют mincore (как вы можете видеть, все профилирование / статистика):

Почему это подвергается непривилегированным пользователям?

На самом деле это был бы хороший вопрос около один год go, когда Семантика системного вызова не была четко определена, и существование такого системного вызова было довольно сомнительным. До версии ядра 4.14.2 mincore фактически можно было использовать для утечки неинициализированной памяти ядра из пространства пользователя (см. CVE-2017-16994 и соответствующий отчет об ошибках Project Zero ).

С тех пор системный вызов был исправлен и его семантика обновлена. Единственное, что может сделать процесс, вызвав его, это запросить информацию о его карте виртуальной памяти. Ничего страшного на самом деле, только самопроверка, отсюда и доступность для непривилегированных процессов. Нет никакой реальной причины делать это привилегированным системным вызовом, который, если это будет сделано, также может рассматриваться как поломка API.

...