免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7618 | 回复: 3

请谁回答下:copy_to_user()前是否还有必要调用access_ok()检验一下? [复制链接]

论坛徽章:
0
发表于 2008-08-04 10:49 |显示全部楼层
请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-08-04 11:51 |显示全部楼层
原帖由 vdigital 于 2008-8-4 10:49 发表
请熟悉驱动的人回答下:copy_to_user(buf, ...)前是否还有必要调用access_ok(VERIFY_WTITE, ...)检验一下?


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

论坛徽章:
0
发表于 2008-08-06 23:41 |显示全部楼层

回复 #1 vdigital 的帖子

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

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
发表于 2008-08-07 10:34 |显示全部楼层
/**
* 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了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP