我一直认为当内核通过 procfs 写入用户时,copy_to_user
是必要的。
虽然我忘了做一次(我使用了snprintf
),但一切都工作正常。既然我注意到了,我就一直在寻找。我发现this link这并不是说需要 copy_to_user
,即使对于其他部分(内核从用户读取)它确实说 copy_from_user
是必要的。
那么,缓冲区是否已经在内核空间中提供给内核模块来写入数据(以便用户从中读取数据)?通过 procfs 写入时,真的不需要 copy_to_user
吗?或者我很幸运没有发生车祸?
最佳答案
在处理用户空间指针时,始终使用copy_from_user
和copy_to_user
。即使简单的 memcpy
有时对您有用,但在某些情况下它也可能会失败。请参阅this信息线程。
谈到procfs
,有必要考虑到它在内核内存预分配方面使用了一个小技巧。请参阅this链接了解详细信息。
关于c - procfs 是否需要 copy_to_user ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9991416/