我是内核编码的新手。我的问题似乎很愚蠢,但我花了很多时间,无法弄清楚我做错了什么。 这是我的代码。似乎没有任何东西被复制到buff,当我printk result_of_cfu时,它是8意味着8个字节不被复制。 我在这做错了什么?
asmlinkage long sys_take_stat(struct array_stats *stats, long data[],long size){
unsigned long result_of_cfu = 0;
int counter = 0;
for(counter = 0;counter<size;size++){
long buff = 0;
long current_data = data[counter];
result_of_cfu = copy_from_user(&buff,¤t_data,sizeof(current_data));
}
}
答案 0 :(得分:3)
您应该使用 copy_from_user 而不是解除引用数据指针:
...
for(counter = 0;counter<size;size++){
long buff;
result_of_cfu = copy_from_user(&buf, data + counter, sizeof(*data));
}