Changes from v1: * Take "space_" out of do_kern/user_addr_fault() * Make "bad fault" comment in do_kern_addr_fault() less scary * Add clarifying comment for the conditions under which do_kern_addr_fault() is called. * Remove mention of hw_error_code in search_exception_tables() comment. * Clarify that the exception tables spell out individual instructions, not larger sections of code. * Use PAGE_MASK in is_vsyscall_vaddr() * Add some additional reasoning behind the code move when moving the vsyscall handling to user address space handler * Remove hard-coded ~0xfff and replace with PAGE_MASK
--- I went trying to clean up the spurious protection key checks. But, I got distracted by some other warts in the code. I hope this makes things more comprehendable with some improved structure, commenting and naming. We come out the other side of it with a new warning in for pkey faults in the kernel portion of the address space, and removal of some dead pkeys code, but no other functional changes. There is a potential impact from moving the vsyscall emulation. But, this does pass the x86 selftests without any fuss. Cc: Sean Christopherson <[email protected]> Cc: "Peter Zijlstra (Intel)" <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Andy Lutomirski <[email protected]> Cc: Jann Horn <[email protected]> Cc: [email protected]

