The patch titled Subject: powerpc/mm: fix mmap_lock bad unlock has been added to the -mm mm-unstable branch. Its filename is powerc-mm-try-vma-lock-based-page-fault-handling-first-fix.patch This patch will shortly appear at https://git.kernel.org/pub/scm/linux/kernel/git/akpm/25-new.git/tree/patches/powerc-mm-try-vma-lock-based-page-fault-handling-first-fix.patch This patch will later appear in the mm-unstable branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next via the mm-everything branch at git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm and is updated there every 2-3 working days ------------------------------------------------------ From: Laurent Dufour <ldufour@xxxxxxxxxxxxx> Subject: powerpc/mm: fix mmap_lock bad unlock Date: Mon, 6 Mar 2023 16:42:44 +0100 When page fault is tried holding the per VMA lock, bad_access_pkey() and bad_access() should not be called because it is assuming the mmap_lock is held. In the case a bad access is detected, fall back to the default path, grabbing the mmap_lock to handle the fault and report the error. Link: https://lkml.kernel.org/r/20230306154244.17560-1-ldufour@xxxxxxxxxxxxx Fixes: 169db3bb4609 ("powerc/mm: try VMA lock-based page fault handling first") Signed-off-by: Laurent Dufour <ldufour@xxxxxxxxxxxxx> Reported-by: Sachin Sant <sachinp@xxxxxxxxxxxxx> Link: https://lore.kernel.org/linux-mm/842502FB-F99C-417C-9648-A37D0ECDC9CE@xxxxxxxxxxxxx Cc: Suren Baghdasaryan <surenb@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- --- a/arch/powerpc/mm/fault.c~powerc-mm-try-vma-lock-based-page-fault-handling-first-fix +++ a/arch/powerpc/mm/fault.c @@ -479,17 +479,13 @@ static int ___do_page_fault(struct pt_re if (unlikely(access_pkey_error(is_write, is_exec, (error_code & DSISR_KEYFAULT), vma))) { - int rc = bad_access_pkey(regs, address, vma); - vma_end_read(vma); - return rc; + goto lock_mmap; } if (unlikely(access_error(is_write, is_exec, vma))) { - int rc = bad_access(regs, address); - vma_end_read(vma); - return rc; + goto lock_mmap; } fault = handle_mm_fault(vma, address, flags | FAULT_FLAG_VMA_LOCK, regs); _ Patches currently in -mm which might be from ldufour@xxxxxxxxxxxxx are powerc-mm-try-vma-lock-based-page-fault-handling-first.patch powerc-mm-try-vma-lock-based-page-fault-handling-first-fix.patch