Ядро паники - не удалось copy_from_user, kmalloc?

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

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

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

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

1 ответ

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

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

Другие вопросы по тегам