Skip to content

Commit 4eb4e96

Browse files
author
Alex Williamson
committed
vfio/type1: Catch zero from pin_user_pages_remote()
JIRA: https://issues.redhat.com/browse/RHEL-85587 commit afe84f3 Author: Alex Williamson <alex.williamson@redhat.com> Date: Tue Feb 18 15:22:01 2025 -0700 vfio/type1: Catch zero from pin_user_pages_remote() pin_user_pages_remote() can currently return zero for invalid args or zero nr_pages, neither of which should ever happen. However vaddr_get_pfns() indicates it should only ever return a positive value or -errno and there's a theoretical case where this can slip through and be unhandled by callers. Therefore convert zero to -EFAULT. Reviewed-by: Peter Xu <peterx@redhat.com> Reviewed-by: Mitchell Augustin <mitchell.augustin@canonical.com> Tested-by: Mitchell Augustin <mitchell.augustin@canonical.com> Reviewed-by: Jason Gunthorpe <jgg@nvidia.com> Link: https://lore.kernel.org/r/20250218222209.1382449-2-alex.williamson@redhat.com Signed-off-by: Alex Williamson <alex.williamson@redhat.com> Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
1 parent fc40056 commit 4eb4e96

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/vfio/vfio_iommu_type1.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -565,6 +565,8 @@ static int vaddr_get_pfns(struct mm_struct *mm, unsigned long vaddr,
565565
if (ret > 0) {
566566
*pfn = page_to_pfn(pages[0]);
567567
goto done;
568+
} else if (!ret) {
569+
ret = -EFAULT;
568570
}
569571

570572
vaddr = untagged_addr_remote(mm, vaddr);

0 commit comments

Comments
 (0)