5.10内核copy_to_user失败问题

背景

最近写了一个内核模块,用了/proc文件操作,通过proc文件与内核进行信息交互。
cat 文件,或者sysctl -a,在4.19内核能够正常运行,但是在5.10内核运行失败。

debug

strace 进程信息如下,发现进入了死循环状态,读取文件内容为0。然后debug内核模块,发现 copy_to_user 调用 access_ok 函数检查失败。

mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f34bde2f000
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
write(1, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
write(1, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
read(3, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072
write(1, “\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0”…, 131072) = 131072

解决办法

未知

你可能感兴趣的:(Linux操作系统,内核,proc,copy_to_user,cat)