From: Brian Foster Date: Mon, 24 Feb 2025 14:47:54 +0000 (-0500) Subject: dax: advance the iomap_iter on pte and pmd faults X-Git-Tag: v6.15-rc1~249^2~4^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6fe32fe1bbc1dce43daf3569dd8a84e11446257f;p=thirdparty%2Fkernel%2Flinux.git dax: advance the iomap_iter on pte and pmd faults Advance the iomap_iter on PTE and PMD faults. Each of these operations assign a hardcoded size to iter.processed. Replace those with an advance and status return. Signed-off-by: Brian Foster Link: https://lore.kernel.org/r/20250224144757.237706-10-bfoster@redhat.com Reviewed-by: "Darrick J. Wong" Signed-off-by: Christian Brauner --- diff --git a/fs/dax.c b/fs/dax.c index c8c0d81122abd..44701865ca94e 100644 --- a/fs/dax.c +++ b/fs/dax.c @@ -1771,8 +1771,10 @@ static vm_fault_t dax_iomap_pte_fault(struct vm_fault *vmf, pfn_t *pfnp, ret |= VM_FAULT_MAJOR; } - if (!(ret & VM_FAULT_ERROR)) - iter.processed = PAGE_SIZE; + if (!(ret & VM_FAULT_ERROR)) { + u64 length = PAGE_SIZE; + iter.processed = iomap_iter_advance(&iter, &length); + } } if (iomap_errp) @@ -1885,8 +1887,10 @@ static vm_fault_t dax_iomap_pmd_fault(struct vm_fault *vmf, pfn_t *pfnp, continue; /* actually breaks out of the loop */ ret = dax_fault_iter(vmf, &iter, pfnp, &xas, &entry, true); - if (ret != VM_FAULT_FALLBACK) - iter.processed = PMD_SIZE; + if (ret != VM_FAULT_FALLBACK) { + u64 length = PMD_SIZE; + iter.processed = iomap_iter_advance(&iter, &length); + } } unlock_entry: