On Sun, May 22, 2022 at 03:59:01PM +0200, Christophe JAILLET wrote: > In the error paths introduced by the commit in the Fixes tag, a mutex may > be left locked. > Add the correct goto instead of a direct return. > > Fixes: a1468175bb17 ("vhost-vdpa: support ASID based IOTLB API") > Signed-off-by: Christophe JAILLET <christophe.jaillet@xxxxxxxxxx> Acked-by: Michael S. Tsirkin <mst@xxxxxxxxxx> > --- > WARNING: This patch only fixes the goto vs return mix-up in this function. > However, the 2nd hunk looks really spurious to me. I think that the: > - return -EINVAL; > + r = -EINVAL; > + goto unlock; > should be done only in the 'if (!iotlb)' block. > > As I don't know this code, I just leave it as-is but draw your attention > in case this is another bug lurking. > --- > drivers/vhost/vdpa.c | 6 ++++-- > 1 file changed, 4 insertions(+), 2 deletions(-) > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > index 1f1d1c425573..3e86080041fc 100644 > --- a/drivers/vhost/vdpa.c > +++ b/drivers/vhost/vdpa.c > @@ -1000,7 +1000,8 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev *dev, u32 asid, > if (!as) { > dev_err(&v->dev, "can't find and alloc asid %d\n", > asid); > - return -EINVAL; > + r = -EINVAL; > + goto unlock; > } > iotlb = &as->iotlb; > } else > @@ -1013,7 +1014,8 @@ static int vhost_vdpa_process_iotlb_msg(struct vhost_dev *dev, u32 asid, > } > if (!iotlb) > dev_err(&v->dev, "no iotlb for asid %d\n", asid); > - return -EINVAL; > + r = -EINVAL; > + goto unlock; > } > > switch (msg->type) { > -- > 2.34.1