diff options
| author | Mark Brown <broonie@kernel.org> | 2026-07-23 13:42:58 +0100 |
|---|---|---|
| committer | Mark Brown <broonie@kernel.org> | 2026-07-23 13:43:02 +0100 |
| commit | cdae9963d80ffb6351ae94b866d6c05ff456952c (patch) | |
| tree | 655f312daba7c56c037ce5013ad0816a112b6ce4 /kernel/dma/mapping.c | |
| parent | b60d1fe05289a42ca691c26825503cc3d31305e2 (diff) | |
| parent | 71a7a58818a33631c9518f944cef5ca55aba6537 (diff) | |
| download | linux-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.c | 8 |
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); |
