On Sun, 1 Nov 2020 at 21:02, Alex Williamson <alex.william...@redhat.com> wrote: > > From: Kirti Wankhede <kwankh...@nvidia.com> > > Whether the VFIO device supports migration or not is decided based of > migration region query. If migration region query is successful and migration > region initialization is successful then migration is supported else > migration is blocked. > > Signed-off-by: Kirti Wankhede <kwankh...@nvidia.com> > Reviewed-by: Neo Jia <c...@nvidia.com> > Acked-by: Dr. David Alan Gilbert <dgilb...@redhat.com> > Reviewed-by: Cornelia Huck <coh...@redhat.com> > Signed-off-by: Alex Williamson <alex.william...@redhat.com>
Hi; Coverity points out (CID 1436126) that this code has a use-after-free: > +int vfio_migration_probe(VFIODevice *vbasedev, Error **errp) > +{ > + struct vfio_region_info *info = NULL; > + Error *local_err = NULL; > + int ret; > + > + ret = vfio_get_dev_region_info(vbasedev, VFIO_REGION_TYPE_MIGRATION, > + VFIO_REGION_SUBTYPE_MIGRATION, &info); > + if (ret) { > + goto add_blocker; > + } > + > + ret = vfio_migration_init(vbasedev, info); > + if (ret) { > + goto add_blocker; > + } > + > + g_free(info); > + trace_vfio_migration_probe(vbasedev->name, info->index); We free info, and then access info->index. Switching the order of the g_free() and the tracepoint seems the obvious fix. thanks -- PMM