Commit c8550785 authored by Qi Zheng's avatar Qi Zheng Committed by Andrew Morton
Browse files

mm: khugepaged: __collapse_huge_page_swapin() use pte_offset_map_ro_nolock()

In __collapse_huge_page_swapin(), we just use the ptl for pte_same() check
in do_swap_page().  In other places, we directly use
pte_offset_map_lock(), so convert it to using pte_offset_map_ro_nolock().

Link: https://lkml.kernel.org/r/dc97a6c3cb9ea80cab30c5626eeea79959d93258.1727332572.git.zhengqi.arch@bytedance.com


Signed-off-by: default avatarQi Zheng <zhengqi.arch@bytedance.com>
Acked-by: default avatarDavid Hildenbrand <david@redhat.com>
Reviewed-by: default avatarMuchun Song <muchun.song@linux.dev>
Cc: Hugh Dickins <hughd@google.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Mike Rapoport (Microsoft) <rppt@kernel.org>
Cc: Peter Xu <peterx@redhat.com>
Cc: Ryan Roberts <ryan.roberts@arm.com>
Cc: Vishal Moola (Oracle) <vishal.moola@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent bd6ad65d
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -1014,7 +1014,11 @@ static int __collapse_huge_page_swapin(struct mm_struct *mm,
		};

		if (!pte++) {
			pte = pte_offset_map_nolock(mm, pmd, address, &ptl);
			/*
			 * Here the ptl is only used to check pte_same() in
			 * do_swap_page(), so readonly version is enough.
			 */
			pte = pte_offset_map_ro_nolock(mm, pmd, address, &ptl);
			if (!pte) {
				mmap_read_unlock(mm);
				result = SCAN_PMD_NULL;