x86/fsgsbase/64: Fix the base write helper functions
authorChang S. Bae <chang.seok.bae@intel.com>
Mon, 26 Nov 2018 19:55:24 +0000 (11:55 -0800)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 18 Dec 2018 13:26:09 +0000 (14:26 +0100)
commit87ab4689ca6526079ab6f5150219ee88b42000ae
tree585d3e7a0524b541de9a006d015a2ec7bc1984e6
parent721066dfd4d5c0fee5772c777d6930d0f423b4eb
x86/fsgsbase/64: Fix the base write helper functions

Andy spotted a regression in the fs/gs base helpers after the patch series
was committed. The helper functions which write fs/gs base are not just
writing the base, they are also changing the index. That's wrong and needs
to be separated because writing the base has not to modify the index.

While the regression is not causing any harm right now because the only
caller depends on that behaviour, it's a guarantee for subtle breakage down
the road.

Make the index explicitly changed from the caller, instead of including
the code in the helpers.

Subsequently, the task write helpers do not handle for the current task
anymore. The range check for a base value is also factored out, to minimize
code redundancy from the caller.

Fixes: b1378a561fd1 ("x86/fsgsbase/64: Introduce FS/GS base helper functions")
Suggested-by: Andy Lutomirski <luto@kernel.org>
Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Andy Lutomirski <luto@kernel.org>
Cc: "H . Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Ravi Shankar <ravi.v.shankar@intel.com>
Cc: H. Peter Anvin <hpa@zytor.com>
Link: https://lkml.kernel.org/r/20181126195524.32179-1-chang.seok.bae@intel.com
arch/x86/include/asm/fsgsbase.h
arch/x86/kernel/process_64.c
arch/x86/kernel/ptrace.c