Я пишу руткит для своего класса ОС (учитель не против, если я попрошу здесь помощи). Мой руткит перехватывает системный вызов sys_read, чтобы скрыть от пользователя «магические» порты. Когда я копирую пользовательский буфер *buf (один из аргументов sys_read) в пространство ядра (в буфер с именем kbuf), я получаю ошибку паники ядра/дампа ядра. Возможно, это просто потому, что прерывание чтения приводит к остановке системы, но мне интересно, есть ли у кого-нибудь какие-либо взгляды на это.
Код доступен онлайн. Посмотрите на строку 207: https://github.com/joshimhoff/toykit/blob/master/toykit.c
Я подключил getdents и использовал copy_from_user, чтобы перенести структуры getdents в пространство ядра, и это сработало хорошо! Я не уверен, что отличается от чтения.
Спасибо за помощь!