powerpc/mm: convert coprocessor fault to lock_mm_and_find_vma()
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 24 Jun 2023 18:17:05 +0000 (11:17 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 24 Jun 2023 21:12:58 +0000 (14:12 -0700)
This is one of the simple cases, except there's no pt_regs pointer.
Which is fine, as lock_mm_and_find_vma() is set up to work fine with a
NULL pt_regs.

Powerpc already enabled LOCK_MM_AND_FIND_VMA for the main CPU faulting,
so we can just use the helper without any extra work.

Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
arch/powerpc/mm/copro_fault.c

index 7c507fb48182bd461da33036b67cdcef946f93fb..f49fd873df8da239e3c24934bfae3ca646ca875a 100644 (file)
@@ -33,19 +33,11 @@ int copro_handle_mm_fault(struct mm_struct *mm, unsigned long ea,
        if (mm->pgd == NULL)
                return -EFAULT;
 
-       mmap_read_lock(mm);
-       ret = -EFAULT;
-       vma = find_vma(mm, ea);
+       vma = lock_mm_and_find_vma(mm, ea, NULL);
        if (!vma)
-               goto out_unlock;
-
-       if (ea < vma->vm_start) {
-               if (!(vma->vm_flags & VM_GROWSDOWN))
-                       goto out_unlock;
-               if (expand_stack(vma, ea))
-                       goto out_unlock;
-       }
+               return -EFAULT;
 
+       ret = -EFAULT;
        is_write = dsisr & DSISR_ISSTORE;
        if (is_write) {
                if (!(vma->vm_flags & VM_WRITE))