Commit d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on
shared memory types") modifies do_page_fault() to handle the VM_FAULT_
COMPLETED case, but forget to change for LoongArch, so fix it as other
architectures does.
Fixes: d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on shared memory types")
Signed-off-by: Huacai Chen <[email protected]>
---
arch/loongarch/mm/fault.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c
index 605579b19a00..1ccd53655cab 100644
--- a/arch/loongarch/mm/fault.c
+++ b/arch/loongarch/mm/fault.c
@@ -216,6 +216,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
return;
}
+ /* The fault is fully completed (including releasing mmap lock) */
+ if (fault & VM_FAULT_COMPLETED)
+ return;
+
if (unlikely(fault & VM_FAULT_RETRY)) {
flags |= FAULT_FLAG_TRIED;
--
2.31.1
It's an optimization to shared memory types. Looks good.
Reviewed-by: Guo Ren <[email protected]>
On Mon, Aug 15, 2022 at 12:05 PM Huacai Chen <[email protected]> wrote:
>
> Commit d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on
> shared memory types") modifies do_page_fault() to handle the VM_FAULT_
> COMPLETED case, but forget to change for LoongArch, so fix it as other
> architectures does.
>
> Fixes: d92725256b4f22d0 ("mm: avoid unnecessary page fault retires on shared memory types")
> Signed-off-by: Huacai Chen <[email protected]>
> ---
> arch/loongarch/mm/fault.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/loongarch/mm/fault.c b/arch/loongarch/mm/fault.c
> index 605579b19a00..1ccd53655cab 100644
> --- a/arch/loongarch/mm/fault.c
> +++ b/arch/loongarch/mm/fault.c
> @@ -216,6 +216,10 @@ static void __kprobes __do_page_fault(struct pt_regs *regs,
> return;
> }
>
> + /* The fault is fully completed (including releasing mmap lock) */
> + if (fault & VM_FAULT_COMPLETED)
> + return;
> +
> if (unlikely(fault & VM_FAULT_RETRY)) {
> flags |= FAULT_FLAG_TRIED;
>
> --
> 2.31.1
>
--
Best Regards
Guo Ren