Merge tag 'x86_mm_for_6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
[platform/kernel/linux-starfive.git] / fs / proc / task_mmu.c
index cb49479..420510f 100644 (file)
@@ -1688,8 +1688,13 @@ static ssize_t pagemap_read(struct file *file, char __user *buf,
 
        /* watch out for wraparound */
        start_vaddr = end_vaddr;
-       if (svpfn <= (ULONG_MAX >> PAGE_SHIFT))
-               start_vaddr = untagged_addr(svpfn << PAGE_SHIFT);
+       if (svpfn <= (ULONG_MAX >> PAGE_SHIFT)) {
+               ret = mmap_read_lock_killable(mm);
+               if (ret)
+                       goto out_free;
+               start_vaddr = untagged_addr_remote(mm, svpfn << PAGE_SHIFT);
+               mmap_read_unlock(mm);
+       }
 
        /* Ensure the address is inside the task */
        if (start_vaddr > mm->task_size)