[PATCH] vhost: handle error while adding split ranges to iotlb

Subsystems: the rest, virtio host (vhost)

STALE1640d LANDED

Landed in mainline as 03a91c9af2c4 on 2022-03-28.

2 messages, 2 authors, 2022-03-18 · open the first message on its own page

[PATCH] vhost: handle error while adding split ranges to iotlb

From: Anirudh Rayabharam <hidden>
Date: 2022-03-12 14:11:57

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 <redacted>
---
 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

Re: [PATCH] vhost: handle error while adding split ranges to iotlb

From: Stefano Garzarella <sgarzare@redhat.com>
Date: 2022-03-18 09:54:37

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")
quoted hunk
Signed-off-by: Anirudh Rayabharam <redacted>
---
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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help