x86/prctl: Remove pointless task argument
authorThomas Gleixner <tglx@linutronix.de>
Thu, 12 May 2022 12:04:08 +0000 (14:04 +0200)
committerBorislav Petkov <bp@suse.de>
Fri, 13 May 2022 10:56:28 +0000 (12:56 +0200)
The functions invoked via do_arch_prctl_common() can only operate on
the current task and none of these function uses the task argument.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lore.kernel.org/r/87lev7vtxj.ffs@tglx
arch/x86/include/asm/fpu/api.h
arch/x86/include/asm/proto.h
arch/x86/kernel/fpu/xstate.c
arch/x86/kernel/process.c
arch/x86/kernel/process_32.c
arch/x86/kernel/process_64.c

index c83b3020350ac264ebd65217bc50e3e9c957376b..6b0f31fb53f7e27e6d21a2076914a808b24c0685 100644 (file)
@@ -162,7 +162,6 @@ static inline bool fpstate_is_confidential(struct fpu_guest *gfpu)
 }
 
 /* prctl */
-struct task_struct;
-extern long fpu_xstate_prctl(struct task_struct *tsk, int option, unsigned long arg2);
+extern long fpu_xstate_prctl(int option, unsigned long arg2);
 
 #endif /* _ASM_X86_FPU_API_H */
index feed36d44d0440f1739f1f63d4c7826331940132..80be803b96d2146766ab41e089945a399c78ae85 100644 (file)
@@ -39,7 +39,6 @@ void x86_report_nx(void);
 
 extern int reboot_force;
 
-long do_arch_prctl_common(struct task_struct *task, int option,
-                         unsigned long arg2);
+long do_arch_prctl_common(int option, unsigned long arg2);
 
 #endif /* _ASM_X86_PROTO_H */
index 39e1c8626ab999fea588e7558927724dd2f3b457..1b016a186c11121fa0f6707eaee03cd6ef5425e9 100644 (file)
@@ -1687,16 +1687,13 @@ EXPORT_SYMBOL_GPL(xstate_get_guest_group_perm);
  * e.g. for AMX which requires XFEATURE_XTILE_CFG(17) and
  * XFEATURE_XTILE_DATA(18) this would be XFEATURE_XTILE_DATA(18).
  */
-long fpu_xstate_prctl(struct task_struct *tsk, int option, unsigned long arg2)
+long fpu_xstate_prctl(int option, unsigned long arg2)
 {
        u64 __user *uptr = (u64 __user *)arg2;
        u64 permitted, supported;
        unsigned long idx = arg2;
        bool guest = false;
 
-       if (tsk != current)
-               return -EPERM;
-
        switch (option) {
        case ARCH_GET_XCOMP_SUPP:
                supported = fpu_user_cfg.max_features | fpu_user_cfg.legacy_features;
index b3d2d414cfaddd4f3488e757c41c25487cc9f102..e86d09a6aac7516bb7ef105a7d86400740861334 100644 (file)
@@ -334,7 +334,7 @@ static int get_cpuid_mode(void)
        return !test_thread_flag(TIF_NOCPUID);
 }
 
-static int set_cpuid_mode(struct task_struct *task, unsigned long cpuid_enabled)
+static int set_cpuid_mode(unsigned long cpuid_enabled)
 {
        if (!boot_cpu_has(X86_FEATURE_CPUID_FAULT))
                return -ENODEV;
@@ -985,20 +985,19 @@ unsigned long __get_wchan(struct task_struct *p)
        return addr;
 }
 
-long do_arch_prctl_common(struct task_struct *task, int option,
-                         unsigned long arg2)
+long do_arch_prctl_common(int option, unsigned long arg2)
 {
        switch (option) {
        case ARCH_GET_CPUID:
                return get_cpuid_mode();
        case ARCH_SET_CPUID:
-               return set_cpuid_mode(task, arg2);
+               return set_cpuid_mode(arg2);
        case ARCH_GET_XCOMP_SUPP:
        case ARCH_GET_XCOMP_PERM:
        case ARCH_REQ_XCOMP_PERM:
        case ARCH_GET_XCOMP_GUEST_PERM:
        case ARCH_REQ_XCOMP_GUEST_PERM:
-               return fpu_xstate_prctl(task, option, arg2);
+               return fpu_xstate_prctl(option, arg2);
        }
 
        return -EINVAL;
index 26edb1cd07a4332e6f9ab500cab316781fc62b26..0faa5e28dd64eb713a6d99a113e91e205cd2729e 100644 (file)
@@ -222,5 +222,5 @@ __switch_to(struct task_struct *prev_p, struct task_struct *next_p)
 
 SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
 {
-       return do_arch_prctl_common(current, option, arg2);
+       return do_arch_prctl_common(option, arg2);
 }
index e459253649be23f6ad942a0ae76b7d3987aa9215..1962008fe7437f89be48e2511199e0356348573f 100644 (file)
@@ -844,7 +844,7 @@ SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
 
        ret = do_arch_prctl_64(current, option, arg2);
        if (ret == -EINVAL)
-               ret = do_arch_prctl_common(current, option, arg2);
+               ret = do_arch_prctl_common(option, arg2);
 
        return ret;
 }
@@ -852,7 +852,7 @@ SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
 #ifdef CONFIG_IA32_EMULATION
 COMPAT_SYSCALL_DEFINE2(arch_prctl, int, option, unsigned long, arg2)
 {
-       return do_arch_prctl_common(current, option, arg2);
+       return do_arch_prctl_common(option, arg2);
 }
 #endif