x86/fpu/signal: Change return code of check_xstate_in_sigframe() to boolean
authorThomas Gleixner <tglx@linutronix.de>
Wed, 8 Sep 2021 13:29:40 +0000 (15:29 +0200)
committerBorislav Petkov <bp@suse.de>
Tue, 14 Sep 2021 19:10:04 +0000 (21:10 +0200)
__fpu_sig_restore() only needs success/fail information and no detailed
error code.

Suggested-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Link: https://lkml.kernel.org/r/20210908132526.024024598@linutronix.de
arch/x86/kernel/fpu/signal.c

index 912d770363e6cd0645a440c4ea028080d20ccfac..2bd4d51f985e58d30fdee8cb0f5553022b9684c7 100644 (file)
@@ -23,8 +23,8 @@ static struct _fpx_sw_bytes fx_sw_reserved_ia32 __ro_after_init;
  * Check for the presence of extended state information in the
  * user fpstate pointer in the sigcontext.
  */
-static inline int check_xstate_in_sigframe(struct fxregs_state __user *fxbuf,
-                                          struct _fpx_sw_bytes *fx_sw)
+static inline bool check_xstate_in_sigframe(struct fxregs_state __user *fxbuf,
+                                           struct _fpx_sw_bytes *fx_sw)
 {
        int min_xstate_size = sizeof(struct fxregs_state) +
                              sizeof(struct xstate_header);
@@ -32,7 +32,7 @@ static inline int check_xstate_in_sigframe(struct fxregs_state __user *fxbuf,
        unsigned int magic2;
 
        if (__copy_from_user(fx_sw, &fxbuf->sw_reserved[0], sizeof(*fx_sw)))
-               return -EFAULT;
+               return false;
 
        /* Check for the first magic field and other error scenarios. */
        if (fx_sw->magic1 != FP_XSTATE_MAGIC1 ||
@@ -48,10 +48,10 @@ static inline int check_xstate_in_sigframe(struct fxregs_state __user *fxbuf,
         * in the memory layout.
         */
        if (__get_user(magic2, (__u32 __user *)(fpstate + fx_sw->xstate_size)))
-               return -EFAULT;
+               return false;
 
        if (likely(magic2 == FP_XSTATE_MAGIC2))
-               return 0;
+               return true;
 setfx:
        trace_x86_fpu_xstate_check_failed(&current->thread.fpu);
 
@@ -59,7 +59,7 @@ setfx:
        fx_sw->magic1 = 0;
        fx_sw->xstate_size = sizeof(struct fxregs_state);
        fx_sw->xfeatures = XFEATURE_MASK_FPSSE;
-       return 0;
+       return true;
 }
 
 /*
@@ -324,7 +324,7 @@ static bool __fpu_restore_sig(void __user *buf, void __user *buf_fx,
        if (use_xsave()) {
                struct _fpx_sw_bytes fx_sw_user;
 
-               if (check_xstate_in_sigframe(buf_fx, &fx_sw_user))
+               if (!check_xstate_in_sigframe(buf_fx, &fx_sw_user))
                        return false;
 
                fx_only = !fx_sw_user.magic1;