create_module - почему используется copy_from_user?
Я читаю LDD3. В главе 8 я не мог понять этот абзац:
Пример функции в ядре, которая использует
vmalloc
этоcreate_module
системный вызов, который используетvmalloc
чтобы получить место для создаваемого модуля. Код и данные модуля впоследствии копируются в выделенное пространство с использованиемcopy_from_user
, Таким образом, модуль кажется загруженным в непрерывную память.
Почему copy_from_user
используемый? Разве мы не только в пространстве ядра?
1 ответ
Напомним, что модули ядра загружаются insmod
(или же modprobe
) команда, которая выполняется в пространстве пользователя. Эти команды загружают модуль ядра с диска в память, а затем передают его ядру, которое должно использовать copy_from_user()
скопировать это в память ядра.