我正在尝试用内核模块替换内核函数,并遇到由kmm(https://stackoverflow.com/a/1242232/6438341)提出的以下注释
但是,内核似乎不允许将任何内容复制到'real_printk'的地址。内核抱怨:“BUG:无法在ffffffff81774863处理内核分页请求”,其中ffffffff81774863是在System.map或/ proc / kallsyms中找到的printk的地址。
任何人都知道如何修复它?
答案 0 :(得分:1)
猜测一下,我会说这可能是因为你正在运行一个写保护文本页面的内核。在修改之前,您需要将这些页面设置为可写。
HOWEVER ,请记住,您正在查看的答案是六年之久。自发布以来,已经出现了许多更好的实时内核修补方法,包括kpatch,SUSE Live Patching和KernelCare。 (在下面,还有ftrace,它可用于动态监视功能。)在尝试从头开始构建自己的修补解决方案之前,您应该仔细查看这些内容。