Message ID | 20220320074449.4909-1-mail@anirudhrb.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v2] vhost: handle error while adding split ranges to iotlb | expand |
On Sun, Mar 20, 2022 at 3:45 PM Anirudh Rayabharam <mail@anirudhrb.com> 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. > > Fixes: e2ae38cf3d91 ("vhost: fix hung thread due to erroneous iotlb entries") > Reviewed-by: Stefano Garzarella <sgarzare@redhat.com> > Signed-off-by: Anirudh Rayabharam <mail@anirudhrb.com> Acked-by: Jason Wang <jasowang@redhat.com> > --- > > v2: > - Add "Fixes:" tag and "Reviewed-by:". > > v1: > https://lore.kernel.org/kvm/20220312141121.4981-1-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 >
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; }