我无法让copy_from_user正常工作

时间:2015-04-08 14:22:20

标签: linux-kernel

我是内核编码的新手。我的问题似乎很愚蠢,但我花了很多时间,无法弄清楚我做错了什么。 这是我的代码。似乎没有任何东西被复制到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,&current_data,sizeof(current_data));
  }
}

1 个答案:

答案 0 :(得分:3)

您应该使用 copy_from_user 而不是解除引用数据指针:

...
for(counter = 0;counter<size;size++){
    long buff;
    result_of_cfu = copy_from_user(&buf, data + counter, sizeof(*data));
}