Паника ядра Ошибка копирования_от_пользователя, kmalloc?

Я пишу руткит для своего класса ОС (учитель не против, если я попрошу здесь помощи). Мой руткит перехватывает системный вызов sys_read, чтобы скрыть от пользователя «магические» порты. Когда я копирую пользовательский буфер *buf (один из аргументов sys_read) в пространство ядра (в буфер с именем kbuf), я получаю ошибку паники ядра/дампа ядра. Возможно, это просто потому, что прерывание чтения приводит к остановке системы, но мне интересно, есть ли у кого-нибудь какие-либо взгляды на это.

Код доступен онлайн. Посмотрите на строку 207: https://github.com/joshimhoff/toykit/blob/master/toykit.c

Я подключил getdents и использовал copy_from_user, чтобы перенести структуры getdents в пространство ядра, и это сработало хорошо! Я не уверен, что отличается от чтения.

Спасибо за помощь!


person Josh Imhoff    schedule 09.05.2013    source источник


Ответы (1)


Я понял. Я вызвал настоящую функцию sys_read и не стал проверять возвращаемое значение. Иногда это отрицательное значение указывает на ошибку. Вместо преждевременного отказа я запросил у kmalloc отрицательное число байтов.

Представь это. Выделение негативной памяти. Это был бы сумасшедший мир.

person Josh Imhoff    schedule 09.05.2013
comment
Это был бы сумасшедший мир! ???? - person cpimhoff; 13.08.2016