请谁回答下:copy_to_user()前是否还有必要调用access_ok()检验一下?
请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(3)
如果你确保这样操作没问题,那就没必要了。搞明白access_ok(VERIFY_WTITE, ...)是干什么的。
没有必要。。。copy_to_user自身会检查用户空间提供的地址有效性。。。
/**
* copy_from_user: - Copy a block of data from user space.
* @to: Destination address, in kernel space.
* @from: Source address, in user space.
* @n: Number of bytes to copy.
*
* Context: User context only. This function may sleep.
*
* Copy data from user space to kernel space.
*
* Returns number of bytes that could not be copied.
* On success, this will be zero.
*
* If some data could not be copied, this function will pad the copied
* data to the requested size using zero bytes.
*/
unsigned long
copy_from_user(void *to, const void __user *from, unsigned long n)
{
BUG_ON((long) n < 0);
if (access_ok(VERIFY_READ, from, n))
n = __copy_from_user(to, from, n);
else
memset(to, 0, n);
return n;
}
这个是X86的实现。由此可见,确实不需要access_ok了