请谁回答下:copy_to_user()前是否还有必要调用access_ok()检验一下?

发布于 2022-09-20 13:31:42 字数 75 浏览 11 评论 0

请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

兰花执着 2022-09-27 13:31:42

原帖由 vdigital 于 2008-8-4 10:49 发表
请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?

如果你确保这样操作没问题,那就没必要了。搞明白access_ok(VERIFY_WTITE, ...)是干什么的。

梦明 2022-09-27 13:31:42

没有必要。。。copy_to_user自身会检查用户空间提供的地址有效性。。。

蝶舞 2022-09-27 13:31:42

/**
* 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了

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文