On Thu, Jul 16, 2026 at 5:02 AM Weimin Xiong <[email protected]> wrote: > > From: xiongweimin <[email protected]> > > The return value of ops->set_map() is currently ignored when handling > VHOST_IOTLB_BATCH_END. If the backend fails to program the IOTLB, > the VMM incorrectly believes the operation succeeded and may continue > with stale or incorrect mappings. > > Save and propagate the error from ops->set_map() in BATCH_END. > > Signed-off-by: xiongweimin <[email protected]> > --- > 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 bb96b1aa5..ffbb10a92 100644 > --- a/drivers/vhost/vdpa.c > +++ b/drivers/vhost/vdpa.c > @@ -1297,8 +1297,10 @@ static int vhost_vdpa_process_iotlb_msg(struct > vhost_dev *dev, u32 asid, > v->in_batch = true; > break; > case VHOST_IOTLB_BATCH_END: > - if (v->in_batch && ops->set_map) > - ops->set_map(vdpa, asid, iotlb); > + if (v->in_batch && ops->set_map) { > + r = ops->set_map(vdpa, asid, iotlb); > + break; > + } > v->in_batch = false;
Maybe this needs to be discussed, but v->in_batch should be set to false even in failure case. > break; > default: > -- > 2.39.3 >
