• Dave Hansen's avatar
    x86/mm: Clarify hardware vs. software "error_code" · 164477c2
    Dave Hansen authored
    We pass around a variable called "error_code" all around the page
    fault code.  Sounds simple enough, especially since "error_code" looks
    like it exactly matches the values that the hardware gives us on the
    stack to report the page fault error code (PFEC in SDM parlance).
    
    But, that's not how it works.
    
    For part of the page fault handler, "error_code" does exactly match
    PFEC.  But, during later parts, it diverges and starts to mean
    something a bit different.
    
    Give it two names for its two jobs.
    
    The place it diverges is also really screwy.  It's only in a spot
    where the hardware tells us we have kernel-mode access that occurred
    while we were in usermode accessing user-controlled address space.
    Add a warning in there.
    
    Cc: x86@kernel.org
    Cc: Jann Horn <jannh@google.com>
    Cc: Sean Christopherson <sean.j.christopherson@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Andy Lutomirski <luto@kernel.org>
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20180928160220.4A2272C9@viggo.jf.intel.com
    164477c2
fault.c 37.9 KB