• David Hildenbrand's avatar
    mm/memory: handle !page case in zap_present_pte() separately · 0cf18e83
    David Hildenbrand authored
    We don't need uptodate accessed/dirty bits, so in theory we could replace
    ptep_get_and_clear_full() by an optimized ptep_clear_full() function. 
    Let's rely on the provided pte.
    
    Further, there is no scenario where we would have to insert uffd-wp
    markers when zapping something that is not a normal page (i.e., zeropage).
    Add a sanity check to make sure this remains true.
    
    should_zap_folio() no longer has to handle NULL pointers.  This change
    replaces 2/3 "!page/!folio" checks by a single "!page" one.
    
    Note that arch_check_zapped_pte() on x86-64 checks the HW-dirty bit to
    detect shadow stack entries.  But for shadow stack entries, the HW dirty
    bit (in combination with non-writable PTEs) is set by software.  So for
    the arch_check_zapped_pte() check, we don't have to sync against HW
    setting the HW dirty bit concurrently, it is always set.
    
    Link: https://lkml.kernel.org/r/20240214204435.167852-3-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Reviewed-by: default avatarRyan Roberts <ryan.roberts@arm.com>
    Cc: Alexander Gordeev <agordeev@linux.ibm.com>
    Cc: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Cc: Catalin Marinas <catalin.marinas@arm.com>
    Cc: Christian Borntraeger <borntraeger@linux.ibm.com>
    Cc: Christophe Leroy <christophe.leroy@csgroup.eu>
    Cc: Heiko Carstens <hca@linux.ibm.com>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
    Cc: Nicholas Piggin <npiggin@gmail.com>
    Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Sven Schnelle <svens@linux.ibm.com>
    Cc: Vasily Gorbik <gor@linux.ibm.com>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yin Fengwei <fengwei.yin@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    0cf18e83
memory.c 175 KB