如何更改内核中堆的权限space?

how to change permissions of heap in kernel space?

我目前正在为 Linux 编写内核模块,并一直在尝试动态分配一大块内存并更改其权限 (rwx),但它就是行不通。

do_mmapinit_mm 似乎丢失了(被链接器识别为未定义)。 一个可能的解决方案可能是访问内核的 vma,但我找不到访问它的方法。

是否可以更改内核中堆的权限space?

vmalloc_exec 未导出供驱动使用,因此您无法使用它。

但是,__vmalloc 采用页面保护参数,所以它应该做你想做的事:

void *__vmalloc(unsigned long size, gfp_t gfp_mask, pgprot_t prot);

所以要分配可执行页面,试试这个:

void *p = __vmalloc(size, GFP_KERNEL, PAGE_KERNEL_EXEC);