Доброй ночи. Возникла необходимость изменять таблицу системных вызовов. Но в последних версиях ядер она, по умолчанию, доступна только для чтения. Поэтому я, после получения адреса таблицы в памяти, решил изменить атрибут страницы, содержащей таблицу. Для изменения атрибутов можно использовать этот код:
int set_page_rw(long unsigned _addr)
{
struct page *pg;
pgprot_t prot;
//get real memory page from virtual address
pg = virt_to_page(_addr);
//set attributes (read/write)
prot.pgprot = VM_READ | VM_WRITE;
return change_page_attr(pg, 1, prot);
}
Вся проблема заключается в том, что вызов change_page_attr устарел и удален, начиная еще с 24-го ядра. Хотелось бы узнать, как можно, другими методами, поменять атрибут страницы памяти. Спасибо.