如何在内核空间中更改堆的权限?

时间:2015-11-07 18:38:08

标签: c linux-kernel

我目前正在为Linux编写内核模块,并且一直在尝试动态分配大块内存并更改其权限(rwx),但它无法正常工作。

似乎缺少

do_mmapinit_mm(链接器认为未定义)。 可能的解决方案可能是访问内核的vma,但我找不到访问它的方法。

是否可以在内核空间中更改堆的权限?

1 个答案:

答案 0 :(得分:1)

vmalloc_exec未导出供驾驶员使用,因此您无法使用它。

但是,__vmalloc会采用页面保护参数,因此它应该执行您想要的操作:

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

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

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