У меня есть два места в модуле ядра (Linux 3,13):Различных привилегий в исполнении модуля ядра
- Одним из них является
module_init
- Другого код я крюк с Недействительным опкодом (путем взлома прерывания описания Таблица).
Мой код предназначен для включения счетчика производительности оборудования. Когда я помещаю его в module_init
, код работает нормально. Но когда я помещаю его на второе место (вызванное запуском команды с недопустимым кодом операции), код получает ошибку permission denied
(т. Е. Errno: -13
).
Поскольку оба места находятся в одном модуле ядра, верно ли, что «даже в пространстве ядра существуют разные привилегии?»
Обновления: то, что стоит упомянуть, заключается в том, что когда я запускаю недопустимый код операции как root
в пользовательском пространстве, ошибка -13
errno отсутствует; в противном случае он остается ...
Я предполагаю, что «привилегия исполнения команды решает задачу выполнения обработчика прерывания».
У вас всегда есть [OS privelleges] (http://en.wikipedia.org/wiki/Privilege_level) на процессоре. Даже в * режиме ядра *; не все разрешено. В противном случае вы можете легко взять под контроль. –
@CommuSoft: Объясняет ли это различие между его кодом ядра в 'module_init' и его кодом ядра для ловушки опкода? – Nemo
[SSCCE] (http://www.sscce.org/) очень помог бы здесь, я думаю. – Nemo