Что означает тип аргумента: const char __user *const __user *argv

Я вижу такой тип в системном вызове 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 *

?


person WindChaser    schedule 30.07.2017    source источник


Ответы (1)


Прочитав список методов file_operations, вы заметите, что ряд параметров включает в себя метод string __user. Эта аннотация представляет собой форму документации, в которой отмечается, что указатель — это адрес в пользовательском пространстве, который не может быть разыменован напрямую. Для обычной компиляции __user не действует, но может использоваться внешним программным обеспечением для проверки, чтобы найти неправильное использование адресов пользовательского пространства.

person manish    schedule 17.07.2018
comment
Добавьте ссылку на соответствующую документацию для справки - person Shubham; 17.07.2018