编译我的内核模块时出现“警告,putname undefined”

时间:2013-10-25 03:06:18

标签: linux linux-kernel

我正在编写一个内核模块,它将检查VFS中的某些内容。在这个模块中,我需要使用内核API“putname”,它定义为:

#ifdef CONFIG_AUDITSYSCALL
void putname(const char *name)
{
if (unlikely(!audit_dummy_context()))
    audit_putname(name);
else
    __putname(name);
}
EXPORT_SYMBOL(putname);

当我在Fedora 18中使用内核3.6.10进行编译时,一切正常,模块工作正常,但是当我将其切换到内核3.11.4时。编译器给了我一个警告“putname未定义”,当我用“__putname”替换“putname”时,可以编译内核模块,但是当它运行时,会出现问题。回溯显示它在__putname中。有没有人可以帮我解决这个问题? 谢谢

1 个答案:

答案 0 :(得分:1)

请参阅杰夫的commit #91a27b2a756784714e924e5e854b919273082d26

  

此补丁集转换getname()/ putname()接口以返回结构而不是字符串。现在,struct只跟踪内核空间中的字符串和原始userland指针。

接口在v3.6之后立即更改。所以你必须考虑到这一变化,重新编写代码。