У меня есть два места в модуле ядра (Linux 3.13):
- Один
module_init
- Другой - это код, который я перехватываю с запуском недопустимого кода операции (путем взлома таблицы описания прерываний).
Мой код должен включить счетчик производительности оборудования. Когда я помещаю его в module_init
, код работает нормально. Но когда я помещаю его на второе место (вызванное выполнением инструкции с недопустимым кодом операции), код получает ошибку permission denied
(т. е. errno:-13
).
Поскольку оба места находятся в одном модуле ядра, правда ли, что «даже в пространстве ядра существуют разные привилегии?»
Обновления: стоит упомянуть, что когда я запускаю недопустимый код операции как root
в пользовательском пространстве, ошибка -13
исчезает; иначе останется...
Я предполагаю, что «привилегия выполнения инструкции определяет привилегию выполнения обработчика прерывания».
module_init
и его кодом ядра для ловушки кода операции? - person Nemo   schedule 08.06.2015enable hardware counter
и способаhacking interrupt description table
. - person Tsyvarev   schedule 08.06.2015