• Pasha Tatashin's avatar
    mm: page table check · df4e817b
    Pasha Tatashin authored
    Check user page table entries at the time they are added and removed.
    
    Allows to synchronously catch memory corruption issues related to double
    mapping.
    
    When a pte for an anonymous page is added into page table, we verify
    that this pte does not already point to a file backed page, and vice
    versa if this is a file backed page that is being added we verify that
    this page does not have an anonymous mapping
    
    We also enforce that read-only sharing for anonymous pages is allowed
    (i.e.  cow after fork).  All other sharing must be for file pages.
    
    Page table check allows to protect and debug cases where "struct page"
    metadata became corrupted for some reason.  For example, when refcnt or
    mapcount become invalid.
    
    Link: https://lkml.kernel.org/r/20211221154650.1047963-4-pasha.tatashin@soleen.comSigned-off-by: default avatarPasha Tatashin <pasha.tatashin@soleen.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Rientjes <rientjes@google.com>
    Cc: Frederic Weisbecker <frederic@kernel.org>
    Cc: Greg Thelen <gthelen@google.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Jiri Slaby <jirislaby@kernel.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Kees Cook <keescook@chromium.org>
    Cc: Masahiro Yamada <masahiroy@kernel.org>
    Cc: Mike Rapoport <rppt@kernel.org>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Paul Turner <pjt@google.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Sami Tolvanen <samitolvanen@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Wei Xu <weixugc@google.com>
    Cc: Will Deacon <will@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    df4e817b
page_table_check.c 6.35 KB