Я подделал struct page
в своем пространстве пользователя в ядре, но я не могу передать VALID_PAGE
чек в ядре. Она определяется следующим образом:pass VALID_PAGE (page) in page_alloc.c
#define VALID_PAGE(page) ((page - mem_map) < max_mapnr)
Что это значит? Я понятия не имею page - mem_map
есть и max_mapnr
есть. Как может моя подделка page
передать эту проверку?
Вы даже пытались найти переменные и их использование в коде ядра? Например. [this] (http://lxr.free-electrons.com/source/mm/memory.c?v=3.6#L73) определение кажется ясным: 'mem_map' - это расположение страниц, max_mapnr - максимальное количество элементов в этом массиве. Итак, 'VALID_PAGE' просто проверяет, принадлежит ли эта страница к указанному массиву страниц. – Tsyvarev
Кстати, когда речь заходит о внутренних функциях ядра (функции, макросы, ...), всегда указывайте версию ядра. Когда вы говорите о сводном коде (в разделе 'arch /' или 'asm /') также указываете архитектуру. – Tsyvarev