From: Liam R. Howlett Date: Tue, 16 Mar 2021 19:59:36 +0000 (-0400) Subject: khugepaged rcu fix X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=06ba53390f6ee196261b09917e182c311a46e0de;p=users%2Fjedix%2Flinux-maple.git khugepaged rcu fix Signed-off-by: Liam R. Howlett --- diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 1e22a5a2e25d6..613f0bdc8b34d 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -2099,6 +2099,8 @@ static unsigned int khugepaged_scan_mm_slot(unsigned int pages, mas_set(&mas, khugepaged_scan.address); if (unlikely(!mmap_read_trylock(mm))) goto breakouterloop_mmap_lock; + + rcu_read_lock(); if (likely(!khugepaged_test_exit(mm))) vma = mas_find(&mas, ULONG_MAX); @@ -2142,6 +2144,7 @@ skip: pgoff_t pgoff = linear_page_index(vma, khugepaged_scan.address); + rcu_read_unlock(); mmap_read_unlock(mm); ret = 1; khugepaged_scan_file(mm, file, pgoff, hpage); @@ -2162,6 +2165,7 @@ skip: } } breakouterloop: + rcu_unread_lock(); mmap_read_unlock(mm); /* exit_mmap will destroy ptes after this */ breakouterloop_mmap_lock: