我正在尝试将自定义结构从内核空间复制到用户空间。在用户空间内,errno 返回“错误地址”。错误地址错误的常见原因是什么?
if(copy_to_user(info, &kernel_info, sizeof(struct prinfo)))
最佳答案
Bad Address 错误表示您提供的地址位置无效。对于上述情况,我猜这是因为您传递的是 info
的副本,而不是指向 info
内存位置的指针。
查看文档,copy_to_user
定义为
copy_to_user(void __user * to, const void * from, unsigned long n);
因此,除非您的 info
变量是一个指针,否则我会将您的代码更新为:
if(copy_to_user(&info, &kernel_info, sizeof(struct prinfo)) ) {
//some stuff here i guess
}
关于c - 来自 copy_to_user 的“错误地址”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61893/