【发布时间】:2019-09-17 14:57:09
【问题描述】:
我阅读了copy_from/to_user函数的源代码。
似乎他们总是返回0。
static inline int copy_from_user(void *to, const void __user volatile *from,
unsigned long n)
{
__chk_user_ptr(from, n);
volatile_memcpy(to, from, n);
return 0;
}
但是,有一些类似下面的代码可以检查 copy_from/to_user 的返回值。
if (copy_from_user(&tmp, user, sizeof(tmp)) != 0)
return -EFAULT;
那么我有三个问题。
- 返回非零的
copy_from/to_user的代码在哪里定义? - 是什么导致
copy_from/to_user返回非零值? - 返回什么值?
【问题讨论】:
标签: c linux linux-kernel kernel