使用kmalloc分配可执行内存

问题描述 投票:0回答:1

问题How to allocate an executable page in a Linux kernel module?的答案描述了如何使用__vmalloc()分配可执行内存。使用kmalloc()也可以吗?我的目标是要有一个物理上连续的可执行内存区域。

c linux-kernel x86 x86-64 kernel-module
1个回答
0
投票

它没有执行权限。我尝试了一下,dmesg显示“内核试图执行受NX保护的页面-尝试利用吗?(uid:0)”

然后不,我假设您无法kmalloc可执行内存。除非我对它的工作方式有误(将指针返回到使用1GB巨大页面来覆盖所有物理RAM的现有映射),否则它与kmalloc的用途/设计完全不兼容。

如果确实需要超过1个物理连续的4k页面的可执行内存,则可以使用vmalloc以外的其他东西,但我不知道它是什么。 (我不是内核开发人员,我只对全局有一点了解,而对CPU体系结构/ x86则了解很多)。也许类似vmalloc然后更改页表?

欢迎其他答案。

© www.soinside.com 2019 - 2024. All rights reserved.