diff options
Diffstat (limited to 'fs/exec.c')
| -rw-r--r-- | fs/exec.c | 13 | 
1 files changed, 7 insertions, 6 deletions
diff --git a/fs/exec.c b/fs/exec.c index ca434534ae9..4e591e20e10 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -105,7 +105,7 @@ static inline void put_binfmt(struct linux_binfmt * fmt)  SYSCALL_DEFINE1(uselib, const char __user *, library)  {  	struct file *file; -	char *tmp = getname(library); +	struct filename *tmp = getname(library);  	int error = PTR_ERR(tmp);  	static const struct open_flags uselib_flags = {  		.open_flag = O_LARGEFILE | O_RDONLY | __FMODE_EXEC, @@ -116,7 +116,7 @@ SYSCALL_DEFINE1(uselib, const char __user *, library)  	if (IS_ERR(tmp))  		goto out; -	file = do_filp_open(AT_FDCWD, tmp, &uselib_flags, LOOKUP_FOLLOW); +	file = do_filp_open(AT_FDCWD, tmp->name, &uselib_flags, LOOKUP_FOLLOW);  	putname(tmp);  	error = PTR_ERR(file);  	if (IS_ERR(file)) @@ -1664,10 +1664,10 @@ SYSCALL_DEFINE3(execve,  		const char __user *const __user *, argv,  		const char __user *const __user *, envp)  { -	const char *path = getname(filename); +	struct filename *path = getname(filename);  	int error = PTR_ERR(path);  	if (!IS_ERR(path)) { -		error = do_execve(path, argv, envp, current_pt_regs()); +		error = do_execve(path->name, argv, envp, current_pt_regs());  		putname(path);  	}  	return error; @@ -1677,10 +1677,11 @@ asmlinkage long compat_sys_execve(const char __user * filename,  	const compat_uptr_t __user * argv,  	const compat_uptr_t __user * envp)  { -	const char *path = getname(filename); +	struct filename *path = getname(filename);  	int error = PTR_ERR(path);  	if (!IS_ERR(path)) { -		error = compat_do_execve(path, argv, envp, current_pt_regs()); +		error = compat_do_execve(path->name, argv, envp, +							current_pt_regs());  		putname(path);  	}  	return error;  |