Remove the duplicated copying of the pathname into the common helper. Signed-off-by: Christoph Hellwig <hch@xxxxxx> --- fs/exec.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/fs/exec.c b/fs/exec.c index b34c1eb9e7ad8e..5c0dd8f85fe7b5 100644 --- a/fs/exec.c +++ b/fs/exec.c @@ -1843,13 +1843,16 @@ static int bprm_execve(struct linux_binprm *bprm, return retval; } -static int do_execveat(int fd, struct filename *filename, +static int do_execveat(int fd, const char __user *pathname, const char __user *const __user *argv, const char __user *const __user *envp, int flags) { + int lookup_flags = (flags & AT_EMPTY_PATH) ? LOOKUP_EMPTY : 0; + struct filename *filename; struct linux_binprm *bprm; int retval; + filename = getname_flags(pathname, lookup_flags, NULL); if (IS_ERR(filename)) return PTR_ERR(filename); @@ -1993,7 +1996,7 @@ SYSCALL_DEFINE3(execve, const char __user *const __user *, argv, const char __user *const __user *, envp) { - return do_execveat(AT_FDCWD, getname(filename), argv, envp, 0); + return do_execveat(AT_FDCWD, filename, argv, envp, 0); } SYSCALL_DEFINE5(execveat, @@ -2002,9 +2005,5 @@ SYSCALL_DEFINE5(execveat, const char __user *const __user *, envp, int, flags) { - int lookup_flags = (flags & AT_EMPTY_PATH) ? LOOKUP_EMPTY : 0; - - return do_execveat(fd, - getname_flags(filename, lookup_flags, NULL), - argv, envp, flags); + return do_execveat(fd, filename, argv, envp, flags); } -- 2.30.1