参数类型的含义是什么:" const char __user * const __user * argv"

时间:2017-07-30 22:46:26

标签: linux linux-kernel kernel system-calls execve

我在execve系统调用中看到了这种类型:

asmlinkage long sys_execve(const char __user *filename,
const char __user *const __user *argv,
const char __user *const __user *envp);


do_execve(struct filename *filename,
const char __user *const __user *__argv,
const char __user *const __user *__envp)

的含义是什么?
const char __user *const __user *

1 个答案:

答案 0 :(得分:1)

在阅读file_operations方法列表时,您会注意到许多参数包括string __user。该注释是一种文档形式,请注意指针是用户空间地址,不能直接使用 取消引用。对于常规编译,__user无效,但是可以由 外部检查软件来发现用户空间地址的滥用。