我一直认为,当内核通过procfs向用户写入数据时,copy_to_user是必要的。
不过有一次我忘了这么做(我用的是snprintf),一切都运行得很好。现在我注意到了,我一直在寻找。我发现this link并没有说需要copy_to_user,即使对于其他部分(内核从用户读取),它确实说copy_from_user是必要的。
那么,在内核空间中,是否已经向内核模块提供了用于写入数据(以便用户从中读取数据)的缓冲区?在通过procfs编写代码时不需要copy_to_user,这是真的吗?或者我很幸运没有撞车?
发布于 2012-04-03 19:49:21
在处理用户空间指针时,始终使用copy_from_user和copy_to_user。即使简单的memcpy有时对您有效,但在某些情况下它可能会失败。有关信息,请参阅this线程。
谈到procfs,有必要考虑到它在内核内存预分配方面使用了一些技巧。有关详细信息,请参阅this链接。
https://stackoverflow.com/questions/9991416
复制相似问题