vhost-vdpa: fix page pinning leakage in error path
authorSi-Wei Liu <si-wei.liu@oracle.com>
Sat, 3 Oct 2020 05:02:10 +0000 (01:02 -0400)
committerMichael S. Tsirkin <mst@redhat.com>
Sun, 4 Oct 2020 07:47:02 +0000 (03:47 -0400)
commit7ed9e3d97c32d969caded2dfb6e67c1a2cc5a0b1
tree390f041ae115d5c9cb71835ca4a07cc8961c58af
parent1477c8aebb94a1db398c12d929a9d27bbd678d8c
vhost-vdpa: fix page pinning leakage in error path

Pinned pages are not properly accounted particularly when
mapping error occurs on IOTLB update. Clean up dangling
pinned pages for the error path. As the inflight pinned
pages, specifically for memory region that strides across
multiple chunks, would need more than one free page for
book keeping and accounting. For simplicity, pin pages
for all memory in the IOVA range in one go rather than
have multiple pin_user_pages calls to make up the entire
region. This way it's easier to track and account the
pages already mapped, particularly for clean-up in the
error path.

Fixes: 4c8cf31885f6 ("vhost: introduce vDPA-based backend")
Signed-off-by: Si-Wei Liu <si-wei.liu@oracle.com>
Link: https://lore.kernel.org/r/1601701330-16837-3-git-send-email-si-wei.liu@oracle.com
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
drivers/vhost/vdpa.c