" set_memory_rw"编译内核模块时UNDEFINED

时间:2016-03-24 09:30:38

标签: c linux linux-kernel kernel kernel-module

我在编译和安装内核模块时遇到问题,内核模块用于查找计算机的sys_call_table,并更改一些值。

但是,当我尝试编译它时,我收到以下消息:

WARNING: "set_memory_rw" [/home/steelslayer/Synergy/synergy-networking/
hook/hook.ko] undefined!

似乎很奇怪,因为我set_memory_rw中找到了/asm/cacheflush.h

无论如何,如果我尝试忽略并安装模块,我会收到以下错误消息:

ERROR: could not insert module hook.ko: Unknown symbol in module

从上一个错误中可以预料到

dmesg的:

hook: Unknown symbol set_memory_rw (err 0)

生成文件:

CONFIG_MODULE_SIG=n
CONFIG_MODULE_SIG_ALL=n
obj-m += hook.o
all:
        make -C /lib/modules/\`uname -r\`/build M=$(PWD) modules
clean:
        make -C /lib/modules/\`uname -r\`/build M=$(PWD) clean

包括并定义:

#include <linux/module.h>
#include <linux/string.h>
#include <linux/init.h>
#include <linux/types.h>
#include <asm/uaccess.h>
#include <asm/cacheflush.h>
#include <linux/syscalls.h>
#include <linux/delay.h>    // loops_per_jiffy

#define CR0_WP 0x00010000   // Write Protect Bit (CR0:16)
/* Just so we do not taint the kernel */
MODULE_LICENSE("GPL");

相关代码:

ret = set_memory_rw(PAGE_ALIGN(addr) - PAGE_SIZE, 3);

我真的不知道为什么会这样,希望得到你的帮助。

0 个答案:

没有答案