Commit afe84f3b authored by Alex Williamson's avatar Alex Williamson
Browse files

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: default avatarPeter Xu <peterx@redhat.com>
Reviewed-by: default avatarMitchell Augustin <mitchell.augustin@canonical.com>
Tested-by: default avatarMitchell Augustin <mitchell.augustin@canonical.com>
Reviewed-by: default avatarJason Gunthorpe <jgg@nvidia.com>
Link: https://lore.kernel.org/r/20250218222209.1382449-2-alex.williamson@redhat.com


Signed-off-by: default avatarAlex Williamson <alex.williamson@redhat.com>
parent 41112160
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -564,6 +564,8 @@ static int vaddr_get_pfns(struct mm_struct *mm, unsigned long vaddr,
	if (ret > 0) {
		*pfn = page_to_pfn(pages[0]);
		goto done;
	} else if (!ret) {
		ret = -EFAULT;
	}

	vaddr = untagged_addr_remote(mm, vaddr);