lkml.org 
[lkml]   [2022]   [Aug]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v13 58/70] 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>
    Acked-by: Vlastimil Babka <vbabka@suse.cz>
    ---
    mm/mprotect.c | 7 ++++---
    1 file changed, 4 insertions(+), 3 deletions(-)

    diff --git a/mm/mprotect.c b/mm/mprotect.c
    index 3a4de77161e9..5bb37e639bfa 100644
    --- a/mm/mprotect.c
    +++ b/mm/mprotect.c
    @@ -674,6 +674,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    const bool rier = (current->personality & READ_IMPLIES_EXEC) &&
    (prot & PROT_READ);
    struct mmu_gather tlb;
    + MA_STATE(mas, &current->mm->mm_mt, start, start);

    start = untagged_addr(start);

    @@ -705,7 +706,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;
    @@ -731,7 +732,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);

    tlb_gather_mmu(&tlb, current->mm);
    for (nstart = start ; ; ) {
    @@ -794,7 +795,7 @@ static int do_mprotect_pkey(unsigned long start, size_t len,
    if (nstart >= end)
    break;

    - vma = prev->vm_next;
    + vma = find_vma(current->mm, prev->vm_end);
    if (!vma || vma->vm_start != nstart) {
    error = -ENOMEM;
    break;
    --
    2.35.1
    \
     
     \ /
      Last update: 2022-08-22 17:14    [W:4.121 / U:0.176 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site