C 错误:当我尝试使用新的驱动程序写入usb存储设备时,无法处理地址的页面错误

C 错误:当我尝试使用新的驱动程序写入usb存储设备时,无法处理地址的页面错误,c,linux,linux-kernel,linux-device-driver,C,Linux,Linux Kernel,Linux Device Driver,我是linux驱动程序的新手。 我正在尝试为我的usb闪存驱动器编写一个新的驱动程序。我找到了一个git,并尝试在我的vmware ubuntu中运行它。但我犯了个错误 BUG: unable to handle page fault for address: 00007ffd588c4b30 #PF: supervisor read access in kernel mode #PF: error_code(0x0001) - permissions violation 我能做什么?可能是一

我是linux驱动程序的新手。 我正在尝试为我的usb闪存驱动器编写一个新的驱动程序。我找到了一个git,并尝试在我的vmware ubuntu中运行它。但我犯了个错误

BUG: unable to handle page fault for address: 00007ffd588c4b30
#PF: supervisor read access in kernel mode
#PF: error_code(0x0001) - permissions violation

我能做什么?

可能是一个野生指针。您应该使用print语句来识别驱动程序代码中的哪一行导致了错误。这将有助于你解决问题。但正如您所看到的,这是一种权限冲突。具体来说,内核在不应该读取用户内存的情况下读取用户内存。阅读。您发现的代码似乎写得不好,违反了各种规则(例如对用户空间指针调用
strlen
),不进行任何检查以防止缓冲区溢出,甚至不使用连接到它的USB设备。其
读取
写入
文件操作处理程序仅访问驱动程序中的内部缓冲区。使用它似乎是浪费时间。