Commit 03a91c9a authored by Anirudh Rayabharam's avatar Anirudh Rayabharam Committed by Michael S. Tsirkin
Browse files

vhost: handle error while adding split ranges to iotlb



vhost_iotlb_add_range_ctx() handles the range [0, ULONG_MAX] by
splitting it into two ranges and adding them separately. The return
value of adding the first range to the iotlb is currently ignored.
Check the return value and bail out in case of an error.

Signed-off-by: default avatarAnirudh Rayabharam <mail@anirudhrb.com>
Link: https://lore.kernel.org/r/20220312141121.4981-1-mail@anirudhrb.com


Signed-off-by: default avatarMichael S. Tsirkin <mst@redhat.com>
Fixes: e2ae38cf ("vhost: fix hung thread due to erroneous iotlb entries")
Reviewed-by: default avatarStefano Garzarella <sgarzare@redhat.com>
parent b04d910a
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -62,8 +62,12 @@ int vhost_iotlb_add_range_ctx(struct vhost_iotlb *iotlb,
	 */
	if (start == 0 && last == ULONG_MAX) {
		u64 mid = last / 2;
		int err = vhost_iotlb_add_range_ctx(iotlb, start, mid, addr,
				perm, opaque);

		if (err)
			return err;

		vhost_iotlb_add_range_ctx(iotlb, start, mid, addr, perm, opaque);
		addr += mid + 1;
		start = mid + 1;
	}