• Rick Edgecombe's avatar
    mm: Move pte/pmd_mkwrite() callers with no VMA to _novma() · 6ecc21bb
    Rick Edgecombe authored
    The x86 Shadow stack feature includes a new type of memory called shadow
    stack. This shadow stack memory has some unusual properties, which requires
    some core mm changes to function properly.
    
    One of these unusual properties is that shadow stack memory is writable,
    but only in limited ways. These limits are applied via a specific PTE
    bit combination. Nevertheless, the memory is writable, and core mm code
    will need to apply the writable permissions in the typical paths that
    call pte_mkwrite(). Future patches will make pte_mkwrite() take a VMA, so
    that the x86 implementation of it can know whether to create regular
    writable or shadow stack mappings.
    
    But there are a couple of challenges to this. Modifying the signatures of
    each arch pte_mkwrite() implementation would be error prone because some
    are generated with macros and would need to be re-implemented. Also, some
    pte_mkwrite() callers operate on kernel memory without a VMA.
    
    So this can be done in a three step process. First pte_mkwrite() can be
    renamed to pte_mkwrite_novma() in each arch, with a generic pte_mkwrite()
    added that just calls pte_mkwrite_novma(). Next callers without a VMA can
    be moved to pte_mkwrite_novma(). And lastly, pte_mkwrite() and all callers
    can be changed to take/pass a VMA.
    
    Earlier work did the first step, so next move the callers that don't have
    a VMA to pte_mkwrite_novma(). Also do the same for pmd_mkwrite().  This
    will be ok for the shadow stack feature, as these callers are on kernel
    memory which will not need to be made shadow stack, and the other
    architectures only currently support one type of memory in pte_mkwrite()
    Signed-off-by: default avatarRick Edgecombe <rick.p.edgecombe@intel.com>
    Signed-off-by: default avatarDave Hansen <dave.hansen@linux.intel.com>
    Reviewed-by: default avatarMike Rapoport (IBM) <rppt@kernel.org>
    Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
    Link: https://lore.kernel.org/all/20230613001108.3040476-3-rick.p.edgecombe%40intel.com
    6ecc21bb
mmu_pv.c 64 KB