• H. Peter Anvin (Intel)'s avatar
    x86/syscall: Maximize MSR_SYSCALL_MASK · 6de4ac1d
    H. Peter Anvin (Intel) authored
    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: default avatarH. Peter Anvin (Intel) <hpa@zytor.com>
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Link: https://lore.kernel.org/r/20210510185316.3307264-5-hpa@zytor.com
    6de4ac1d
common.c 53.7 KB