vfio/type1: Fix missed frees and zero sized removes
authorAlex Williamson <alex.williamson@redhat.com>
Tue, 25 Jun 2013 22:01:44 +0000 (16:01 -0600)
committerAlex Williamson <alex.williamson@redhat.com>
Tue, 25 Jun 2013 22:01:44 +0000 (16:01 -0600)
commitf5bfdbf252ad54aa4b6f765cbe89750087fcc155
tree1f50d34490728738156a8ae486f816ee85131fd1
parentb0e59b85abd42f8a525ff032d5063457e1378808
vfio/type1: Fix missed frees and zero sized removes

With hugepage support we can only properly aligned and sized ranges.
We only guarantee that we can unmap the same ranges mapped and not
arbitrary sub-ranges.  This means we might not free anything or might
free more than requested.  The vfio unmap interface started storing
the unmapped size to return to userspace to handle this.  This patch
fixes a few places where we don't properly handle those cases, moves
a memory allocation to a place where failure is an option and checks
our loops to make sure we don't get into an infinite loop trying to
remove an overlap.

Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
drivers/vfio/vfio_iommu_type1.c