copy_from_user是否会修改用户指针?

时间:2012-09-18 02:55:39

标签: c linux linux-kernel linux-device-driver

在uaccess.h中声明的copy_from_user函数是否从指针修改(void __user *)? 指针在函数声明中没有声明为const,只是它指向的内容。

我问的原因是我想使用copy_from_user两次,第二次copy_from_user从第一个完成的地方复制。

我打算做这样的事情,它能保证有效吗?

//buf is a user pointer that is already defined
copy_from_user(my_first_alloced_region, buf, some_size);
//do stuff
copy_from_user(my_second_alloced_region, buf + some_size, some_other_size);

提前致谢。

1 个答案:

答案 0 :(得分:3)

被调用函数无法修改指针本身,因为您只是将指针值作为参数传递给函数。如果参数被声明为指向const类型的指针,那么被调用者也无法修改指向的内容(至少没有一个会抛弃const的强制转换。指针)。修改调用者本身中指针值的唯一方法是将调用者传递给指针指针类型。