From 48aa7fd12cde5ec87cd319b7878c0efb98760f9e Mon Sep 17 00:00:00 2001 From: "Liam R. Howlett" Date: Tue, 16 Mar 2021 16:00:14 -0400 Subject: [PATCH] mlock rcu fix Signed-off-by: Liam R. Howlett --- mm/mlock.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mm/mlock.c b/mm/mlock.c index 8194507c9710..fe2ea9688d3d 100644 --- a/mm/mlock.c +++ b/mm/mlock.c @@ -623,6 +623,7 @@ static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm, if (mm == NULL) mm = current->mm; + rcu_read_lock(); mas_for_each(&mas, vma, start + len) { if (start >= vma->vm_end) continue; @@ -638,6 +639,7 @@ static unsigned long count_mm_mlocked_page_nr(struct mm_struct *mm, count += vma->vm_end - vma->vm_start; } } + rcu_read_unlock(); return count >> PAGE_SHIFT; } @@ -757,6 +759,7 @@ static int apply_mlockall_flags(int flags) to_add |= VM_LOCKONFAULT; } + rcu_read_lock(); mas_for_each(&mas, vma, ULONG_MAX) { vm_flags_t newflags; @@ -765,9 +768,12 @@ static int apply_mlockall_flags(int flags) /* Ignore errors */ mlock_fixup(vma, &prev, vma->vm_start, vma->vm_end, newflags); + rcu_read_unlock(); mas_pause(&mas); cond_resched(); + rcu_read_lock(); } + rcu_read_unlock(); out: return 0; } -- 2.50.1