summaryrefslogtreecommitdiff
path: root/kernel/dma/mapping.c
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2026-07-23 13:42:58 +0100
committerMark Brown <broonie@kernel.org>2026-07-23 13:43:02 +0100
commitcdae9963d80ffb6351ae94b866d6c05ff456952c (patch)
tree655f312daba7c56c037ce5013ad0816a112b6ce4 /kernel/dma/mapping.c
parentb60d1fe05289a42ca691c26825503cc3d31305e2 (diff)
parent71a7a58818a33631c9518f944cef5ca55aba6537 (diff)
downloadlinux-next-cdae9963d80ffb6351ae94b866d6c05ff456952c.tar.gz
linux-next-cdae9963d80ffb6351ae94b866d6c05ff456952c.zip
Merge branch 'mm-unstable' of https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
Diffstat (limited to 'kernel/dma/mapping.c')
-rw-r--r--kernel/dma/mapping.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/dma/mapping.c b/kernel/dma/mapping.c
index 4fe04669e5e6..c986639044e9 100644
--- a/kernel/dma/mapping.c
+++ b/kernel/dma/mapping.c
@@ -761,12 +761,14 @@ EXPORT_SYMBOL_GPL(dma_free_pages);
int dma_mmap_pages(struct device *dev, struct vm_area_struct *vma,
size_t size, struct page *page)
{
- unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
+ const pgoff_t pgoff_start = vma_start_pgoff(vma);
+ const pgoff_t pgoff_end = vma_end_pgoff(vma);
+ const unsigned long count = PAGE_ALIGN(size) >> PAGE_SHIFT;
- if (vma->vm_pgoff >= count || vma_pages(vma) > count - vma->vm_pgoff)
+ if (pgoff_start >= count || pgoff_end > count)
return -ENXIO;
return remap_pfn_range(vma, vma->vm_start,
- page_to_pfn(page) + vma->vm_pgoff,
+ page_to_pfn(page) + pgoff_start,
vma_pages(vma) << PAGE_SHIFT, vma->vm_page_prot);
}
EXPORT_SYMBOL_GPL(dma_mmap_pages);