x86/fpu: Simplify kernel_fpu_begin()
authorChristoph Hellwig <hch@lst.de>
Tue, 4 Jun 2019 07:15:23 +0000 (09:15 +0200)
committerBorislav Petkov <bp@suse.de>
Mon, 17 Jun 2019 10:19:49 +0000 (12:19 +0200)
Merge two helpers into the main function, remove a pointless local
variable and flatten a conditional.

Signed-off-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Borislav Petkov <bp@suse.de>
Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: Nicolai Stange <nstange@suse.de>
Cc: Rik van Riel <riel@surriel.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: x86-ml <x86@kernel.org>
Link: https://lkml.kernel.org/r/20190604071524.12835-3-hch@lst.de
arch/x86/kernel/fpu/core.c

index 8e046068d20fb1d7325f17d5f74953f60cafadfe..3f92cfad88f0b0fcb2ded59b307771fc493300e7 100644 (file)
@@ -43,12 +43,6 @@ static DEFINE_PER_CPU(bool, in_kernel_fpu);
  */
 DEFINE_PER_CPU(struct fpu *, fpu_fpregs_owner_ctx);
 
-static void kernel_fpu_disable(void)
-{
-       WARN_ON_FPU(this_cpu_read(in_kernel_fpu));
-       this_cpu_write(in_kernel_fpu, true);
-}
-
 static bool kernel_fpu_disabled(void)
 {
        return this_cpu_read(in_kernel_fpu);
@@ -88,32 +82,26 @@ bool irq_fpu_usable(void)
 }
 EXPORT_SYMBOL(irq_fpu_usable);
 
-static void __kernel_fpu_begin(void)
+void kernel_fpu_begin(void)
 {
-       struct fpu *fpu = &current->thread.fpu;
+       preempt_disable();
 
        WARN_ON_FPU(!irq_fpu_usable());
+       WARN_ON_FPU(this_cpu_read(in_kernel_fpu));
 
-       kernel_fpu_disable();
+       this_cpu_write(in_kernel_fpu, true);
 
-       if (!(current->flags & PF_KTHREAD)) {
-               if (!test_thread_flag(TIF_NEED_FPU_LOAD)) {
-                       set_thread_flag(TIF_NEED_FPU_LOAD);
-                       /*
-                        * Ignore return value -- we don't care if reg state
-                        * is clobbered.
-                        */
-                       copy_fpregs_to_fpstate(fpu);
-               }
+       if (!(current->flags & PF_KTHREAD) &&
+           !test_thread_flag(TIF_NEED_FPU_LOAD)) {
+               set_thread_flag(TIF_NEED_FPU_LOAD);
+               /*
+                * Ignore return value -- we don't care if reg state
+                * is clobbered.
+                */
+               copy_fpregs_to_fpstate(&current->thread.fpu);
        }
        __cpu_invalidate_fpregs_state();
 }
-
-void kernel_fpu_begin(void)
-{
-       preempt_disable();
-       __kernel_fpu_begin();
-}
 EXPORT_SYMBOL_GPL(kernel_fpu_begin);
 
 void kernel_fpu_end(void)