]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commit - arch/x86/kernel/cpu/common.c
x86/syscall: Maximize MSR_SYSCALL_MASK
authorH. Peter Anvin (Intel) <hpa@zytor.com>
Mon, 10 May 2021 18:53:13 +0000 (11:53 -0700)
committerIngo Molnar <mingo@kernel.org>
Wed, 12 May 2021 08:49:15 +0000 (10:49 +0200)
commit6de4ac1d03f75248974a398110b15af0bfe65a11
tree1e31c0dee66b5408bbb987d6b8344f5a34a1064e
parentdce0aa3b2ef28900cc4c779c59a870f1b4bdadee
x86/syscall: Maximize MSR_SYSCALL_MASK

It is better to clear as many flags as possible when we do a system
call entry, as opposed to the other way around. The fewer flags we
keep, the lesser the possible interference between the kernel and user
space.

The flags changed are:

 - CF, PF, AF, ZF, SF, OF: these are arithmetic flags which affect
   branches, possibly speculatively. They should be cleared for the same
   reasons we now clear all GPRs on entry.

 - RF: suppresses a code breakpoint on the subsequent instruction. It is
   probably impossible to enter the kernel with RF set, but if it is
   somehow not, it would break a kernel debugger setting a breakpoint on
   the entry point. Either way, user space should not be able to control
   kernel behavior here.

 - ID: this flag has no direct effect (it is a scratch bit only.)
   However, there is no reason to retain the user space value in the
   kernel, and the standard should be to clear unless needed, not the
   other way around.

Signed-off-by: H. Peter Anvin (Intel) <hpa@zytor.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20210510185316.3307264-5-hpa@zytor.com
arch/x86/kernel/cpu/common.c