lkml.org 
[lkml]   [2022]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH 03/14] mm/mprotect: allow exclusive anon pages to be writable
    Date
    From: Nadav Amit <namit@vmware.com>

    Anonymous pages might have the dirty bit clear, but this should not
    prevent mprotect from making them writable if they are exclusive.
    Therefore, skip the test whether the page is dirty in this case.

    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Cc: Andrew Cooper <andrew.cooper3@citrix.com>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: David Hildenbrand <david@redhat.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Will Deacon <will@kernel.org>
    Cc: Yu Zhao <yuzhao@google.com>
    Cc: Nick Piggin <npiggin@gmail.com>
    Signed-off-by: Nadav Amit <namit@vmware.com>
    ---
    mm/mprotect.c | 5 +++--
    1 file changed, 3 insertions(+), 2 deletions(-)

    diff --git a/mm/mprotect.c b/mm/mprotect.c
    index 34c2dfb68c42..da5b9bf8204f 100644
    --- a/mm/mprotect.c
    +++ b/mm/mprotect.c
    @@ -45,7 +45,7 @@ static inline bool can_change_pte_writable(struct vm_area_struct *vma,

    VM_BUG_ON(!(vma->vm_flags & VM_WRITE) || pte_write(pte));

    - if (pte_protnone(pte) || !pte_dirty(pte))
    + if (pte_protnone(pte))
    return false;

    /* Do we need write faults for softdirty tracking? */
    @@ -66,7 +66,8 @@ static inline bool can_change_pte_writable(struct vm_area_struct *vma,
    page = vm_normal_page(vma, addr, pte);
    if (!page || !PageAnon(page) || !PageAnonExclusive(page))
    return false;
    - }
    + } else if (!pte_dirty(pte))
    + return false;

    return true;
    }
    --
    2.25.1
    \
     
     \ /
      Last update: 2022-07-18 21:38    [W:8.242 / U:0.228 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site