[英]“WARNING, putname undefined” when complie my kernel module
我正在編寫一個內核模塊,該模塊將檢查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 is undefined”,當我用“ __putname”替換“ putname”時,可以編譯內核模塊,但是當它運行時,會出問題。 回溯顯示它位於__putname中。 在這個問題上有人可以幫助我嗎? 謝謝
參見Jeff的提交#91a27b2a756784714e924e5e854b919273082d26 :
此補丁集將轉換getname()/ putname()接口以返回結構而不是字符串。 目前,該結構僅跟蹤內核空間中的字符串以及該字符串的原始用戶態指針。
v3.6之后立即更改了界面。 因此,您必須考慮到此更改來重新編寫代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.