Comments 5
Не знаю, правильно ли делать именно так, но у меня включение-выключение защиты страницы делается примерно вот таким костылем:
table — это адрес памяти, в котором нужно что-то сделать.
static void mem_setrw(void **table) {
unsigned int l;
pte_t *pte;
pte = lookup_address((long unsigned int), &l);
pte->pte |= _PAGE_RW;
}
table — это адрес памяти, в котором нужно что-то сделать.
Извиняюсь, не проснувшись криво скопировал
Стоп, или речь идет о работе из пространства пользователя? А то я тут кидаюсь кусками модуля ядра…
Код
static void mem_setrw(void **table) {
unsigned int l;
pte_t *pte;
pte = lookup_address((long unsigned int)table, &l);
pte->pte |= _PAGE_RW;
}
static void mem_setro(void **table) {
unsigned int l;
pte_t *pte;
pte = lookup_address((long unsigned int)table, &l);
pte->pte &= ~_PAGE_RW;
}
Стоп, или речь идет о работе из пространства пользователя? А то я тут кидаюсь кусками модуля ядра…
Sign up to leave a comment.
Кошерный способ модификации защищённых от записи областей ядра Linux