lkml.org 
[lkml]   [2021]   [Dec]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v4 57/66] mm/mprotect: Use maple tree navigation instead of vma linked list
    Date
    From: "Liam R. Howlett" <Liam.Howlett@Oracle.com>

    Signed-off-by: Liam R. Howlett <Liam.Howlett@Oracle.com>
    ---
    mm/mprotect.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/mm/mprotect.c b/mm/mprotect.c
    index e552f5e0ccbd..7af58fd467c6 100644
    --- a/mm/mprotect.c
    +++ b/mm/mprotect.c
    @@ -528,6 +528,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    const int grows = prot & (PROT_GROWSDOWN|PROT_GROWSUP);
    const bool rier = (current->personality & READ_IMPLIES_EXEC) &&
    (prot & PROT_READ);
    + MA_STATE(mas, &current->mm->mm_mt, start, start);

    start = untagged_addr(start);

    @@ -559,7 +560,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    if ((pkey != -1) && !mm_pkey_is_allocated(current->mm, pkey))
    goto out;

    - vma = find_vma(current->mm, start);
    + vma = mas_find(&mas, ULONG_MAX);
    error = -ENOMEM;
    if (!vma)
    goto out;
    @@ -585,7 +586,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    if (start > vma->vm_start)
    prev = vma;
    else
    - prev = vma->vm_prev;
    + prev = mas_prev(&mas, 0);

    for (nstart = start ; ; ) {
    unsigned long mask_off_old_flags;
    @@ -647,7 +648,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    if (nstart >= end)
    goto out;

    - vma = prev->vm_next;
    + vma = find_vma(current->mm, prev->vm_end);
    if (!vma || vma->vm_start != nstart) {
    error = -ENOMEM;
    goto out;
    --
    2.30.2
    \
     
     \ /
      Last update: 2021-12-01 15:33    [W:4.125 / U:0.276 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site