我正在尝试在内核模块中测试getname
。我被劫持的系统调用的代码如下:
asmlinkage long (*real_open)(const char __user *, int, int);
struct filename *getname_filename;
asmlinkage long hijacked_open(const char __user *filename, int flags, int mode) {
getname_filename = getname(filename);
printk("Opened: %s", getname_filename->name);
return real_open(filename, flags, mode);
}
代码编译没有任何问题,但是当我使用insmod
插入模块时,我得到的错误Unknown symbol in module
带有AND而没有printk
行。但是在/proc/kallsyms
中,我可以找到getname
,因此它会被导出。为什么我不能使用它以及如何使用它?
我正在使用Ubuntu 16.04。