Возник вопрос относительно того, в какую облатсь памяти помещается код модуля, после его подключения. В коде insmod он рассматривается, как обыкновенный объектник и соответствующим образом обрабатывается. После чего заполняются соответствующие таблицы, передаваемые системному вызову sys_init_module, который и завершает работу, перенося необходимые структуры в kernel space. Дык вот, получается, что сам код модуля остаётся в user space? Ведь изначально он загружается в пользовательском режиме, а никакого переноса кода из одного сегмента памяти в другой в insmod нет...
Я прав или я чего-то не вкурил? Получается, что код, исполняемый в режиме ядра находится в пользовательском сегменте памяти и может быть спокойно переписан? Бред какой-то.
|