lkml.org 
[lkml]   [2022]   [Oct]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 1/2] mm/uffd: Fix vma check on userfault for wp
    Date
    We used to have a report that pte-marker code can be reached even when
    uffd-wp is not compiled in for file memories, here:

    https://lore.kernel.org/all/YzeR+R6b4bwBlBHh@x1n/T/#u

    I just got time to revisit this and found that the root cause is we simply
    messed up with the vma check, so that for !PTE_MARKER_UFFD_WP system, we
    will allow UFFDIO_REGISTER of MINOR & WP upon shmem as the check was wrong:

    if (vm_flags & VM_UFFD_MINOR)
    return is_vm_hugetlb_page(vma) || vma_is_shmem(vma);

    Where we'll allow anything to pass on shmem as long as minor mode is
    requested.

    Axel did it right when introducing minor mode but I messed it up in
    b1f9e876862d when moving code around. Fix it.

    Cc: Axel Rasmussen <axelrasmussen@google.com>
    Fixes: b1f9e876862d ("mm/uffd: enable write protection for shmem & hugetlbfs")
    Signed-off-by: Peter Xu <peterx@redhat.com>
    ---
    include/linux/userfaultfd_k.h | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    diff --git a/include/linux/userfaultfd_k.h b/include/linux/userfaultfd_k.h
    index f07e6998bb68..9df0b9a762cc 100644
    --- a/include/linux/userfaultfd_k.h
    +++ b/include/linux/userfaultfd_k.h
    @@ -146,9 +146,9 @@ static inline bool userfaultfd_armed(struct vm_area_struct *vma)
    static inline bool vma_can_userfault(struct vm_area_struct *vma,
    unsigned long vm_flags)
    {
    - if (vm_flags & VM_UFFD_MINOR)
    - return is_vm_hugetlb_page(vma) || vma_is_shmem(vma);
    -
    + if ((vm_flags & VM_UFFD_MINOR) &&
    + (!is_vm_hugetlb_page(vma) && !vma_is_shmem(vma)))
    + return false;
    #ifndef CONFIG_PTE_MARKER_UFFD_WP
    /*
    * If user requested uffd-wp but not enabled pte markers for
    --
    2.37.3
    \
     
     \ /
      Last update: 2022-10-24 23:30    [W:4.587 / U:0.212 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site