Подтвердить что ты не робот

Вложенная ошибка страницы в адресном пространстве пользователя в Linux

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

ОС - Linux 2.6.30

Предположим, что оба пользовательских адреса действительны (попадают в разрешение vma, rw) для задачи.

Когда я проверяю код ядра, я обнаруживаю, что ядро ​​не против вложенной ошибки если неисправные адреса действительны и ошибка не возникла в атомарном контексте или в обработчике irq.

(Я не думаю, что ответ специфичен для процессора, но я бы добавил, что меня интересует рука и мипы).

например: сценарий может произойти, если я распечатаю данные стека из обработчика ошибок страницы.

4b9b3361

Ответ 1

Просмотр источников ядра за последний час подсказывает, что это прекрасно: ни определение struct vm_operations_struct, ни код между handle_mm_fault() и вызов vma- > vm_ops- > fault в __ do_fault ( ) содержит какие-либо предостерегающие заявления об этом, а некоторые → обработчики ошибок, на которые я смотрел, тоже не беспокоились об этом...

... Я думаю, что главное, что вам нужно избегать перехода в бесконечную рекурсию с ошибкой по тому же адресу снова, но это, по-видимому, произойдет только в том случае, если стек ядра был в вашем vma, что, скорее всего, не произойдет?

Ответ 2

Это абсолютно правильно. На самом деле вы даже можете спать.

Но вы можете сделать это только один раз, когда эта строка будет передана, так как вы будете в неатомном контексте.