get rid of pt_regs argument of do_execve()
[sfrench/cifs-2.6.git] / fs / exec.c
index 8b9011b67041ddcd57dbcc42e77fa7d0d8b05f7e..5797ed07efd3295852b06429843b04f0a9931671 100644 (file)
--- a/fs/exec.c
+++ b/fs/exec.c
@@ -1083,7 +1083,8 @@ int flush_old_exec(struct linux_binprm * bprm)
        bprm->mm = NULL;                /* We're using it now */
 
        set_fs(USER_DS);
-       current->flags &= ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD);
+       current->flags &=
+               ~(PF_RANDOMIZE | PF_FORKNOEXEC | PF_KTHREAD | PF_NOFREEZE);
        flush_thread();
        current->personality &= ~bprm->per_clear;
 
@@ -1565,19 +1566,17 @@ out_ret:
 
 int do_execve(const char *filename,
        const char __user *const __user *__argv,
-       const char __user *const __user *__envp,
-       struct pt_regs *regs)
+       const char __user *const __user *__envp)
 {
        struct user_arg_ptr argv = { .ptr.native = __argv };
        struct user_arg_ptr envp = { .ptr.native = __envp };
-       return do_execve_common(filename, argv, envp, regs);
+       return do_execve_common(filename, argv, envp, current_pt_regs());
 }
 
 #ifdef CONFIG_COMPAT
-int compat_do_execve(const char *filename,
+static int compat_do_execve(const char *filename,
        const compat_uptr_t __user *__argv,
-       const compat_uptr_t __user *__envp,
-       struct pt_regs *regs)
+       const compat_uptr_t __user *__envp)
 {
        struct user_arg_ptr argv = {
                .is_compat = true,
@@ -1587,7 +1586,7 @@ int compat_do_execve(const char *filename,
                .is_compat = true,
                .ptr.compat = __envp,
        };
-       return do_execve_common(filename, argv, envp, regs);
+       return do_execve_common(filename, argv, envp, current_pt_regs());
 }
 #endif
 
@@ -1668,7 +1667,7 @@ SYSCALL_DEFINE3(execve,
        struct filename *path = getname(filename);
        int error = PTR_ERR(path);
        if (!IS_ERR(path)) {
-               error = do_execve(path->name, argv, envp, current_pt_regs());
+               error = do_execve(path->name, argv, envp);
                putname(path);
        }
        return error;
@@ -1681,8 +1680,7 @@ asmlinkage long compat_sys_execve(const char __user * filename,
        struct filename *path = getname(filename);
        int error = PTR_ERR(path);
        if (!IS_ERR(path)) {
-               error = compat_do_execve(path->name, argv, envp,
-                                                       current_pt_regs());
+               error = compat_do_execve(path->name, argv, envp);
                putname(path);
        }
        return error;
@@ -1695,12 +1693,9 @@ int kernel_execve(const char *filename,
                  const char *const argv[],
                  const char *const envp[])
 {
-       struct pt_regs *p = current_pt_regs();
-       int ret;
-
-       ret = do_execve(filename,
+       int ret = do_execve(filename,
                        (const char __user *const __user *)argv,
-                       (const char __user *const __user *)envp, p);
+                       (const char __user *const __user *)envp);
        if (ret < 0)
                return ret;
 
@@ -1708,6 +1703,6 @@ int kernel_execve(const char *filename,
         * We were successful.  We won't be returning to our caller, but
         * instead to user space by manipulating the kernel stack.
         */
-       ret_from_kernel_execve(p);
+       ret_from_kernel_execve(current_pt_regs());
 }
 #endif