]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
x86/vsyscall: Do not require X86_PF_INSTR to emulate vsyscall
authorKirill A. Shutemov <kirill.shutemov@linux.intel.com>
Tue, 24 Jun 2025 14:59:18 +0000 (17:59 +0300)
committerDave Hansen <dave.hansen@linux.intel.com>
Wed, 13 Aug 2025 22:02:12 +0000 (15:02 -0700)
commit8ba38a7a9a699905b84fa97578a8291010dec273
treeb7ef847c1d1b5ce238c423c08590c8ebe0288f1c
parent8f5ae30d69d7543eee0d70083daf4de8fe15d585
x86/vsyscall: Do not require X86_PF_INSTR to emulate vsyscall

emulate_vsyscall() expects to see X86_PF_INSTR in PFEC on a vsyscall
page fault, but the CPU does not report X86_PF_INSTR if neither
X86_FEATURE_NX nor X86_FEATURE_SMEP are enabled.

X86_FEATURE_NX should be enabled on nearly all 64-bit CPUs, except for
early P4 processors that did not support this feature.

Instead of explicitly checking for X86_PF_INSTR, compare the fault
address to RIP.

On machines with X86_FEATURE_NX enabled, issue a warning if RIP is equal
to fault address but X86_PF_INSTR is absent.

[ dhansen: flesh out code comments ]

Originally-by: Dave Hansen <dave.hansen@intel.com>
Reported-by: Andrew Cooper <andrew.cooper3@citrix.com>
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Reviewed-by: Andrew Cooper <andrew.cooper3@citrix.com>
Link: https://lore.kernel.org/all/bd81a98b-f8d4-4304-ac55-d4151a1a77ab@intel.com
Link: https://lore.kernel.org/all/20250624145918.2720487-1-kirill.shutemov%40linux.intel.com
arch/x86/entry/vsyscall/vsyscall_64.c