diff mbox series

vhost: handle error while adding split ranges to iotlb

Message ID 20220312141121.4981-1-mail@anirudhrb.com (mailing list archive)
State New, archived
Headers show
Series vhost: handle error while adding split ranges to iotlb | expand

Commit Message

Anirudh Rayabharam March 12, 2022, 2:11 p.m. UTC
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: Anirudh Rayabharam <mail@anirudhrb.com>
---
 drivers/vhost/iotlb.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

Comments

Stefano Garzarella March 18, 2022, 9:54 a.m. UTC | #1
On Sat, Mar 12, 2022 at 07:41:21PM +0530, Anirudh Rayabharam wrote:
>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.
>

We could add:

Fixes: e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb entries")

>Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com>
>---
> drivers/vhost/iotlb.c | 6 +++++-
> 1 file changed, 5 insertions(+), 1 deletion(-)
>
>diff --git a/drivers/vhost/iotlb.c b/drivers/vhost/iotlb.c
>index 40b098320b2a..5829cf2d0552 100644
>--- a/drivers/vhost/iotlb.c
>+++ b/drivers/vhost/iotlb.c
>@@ -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;
> 	}
>-- 
>2.35.1
>

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>
diff mbox series

Patch

diff --git a/drivers/vhost/iotlb.c b/drivers/vhost/iotlb.c
index 40b098320b2a..5829cf2d0552 100644
--- a/drivers/vhost/iotlb.c
+++ b/drivers/vhost/iotlb.c
@@ -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;
 	}