diff mbox series

[05/18] vhost-vdpa: don't cleanup twice in vhost_vdpa_add()

Message ID 20210621041650.5826-6-jasowang@redhat.com (mailing list archive)
State New, archived
Headers show
Series vhost-vDPA multiqueue | expand

Commit Message

Jason Wang June 21, 2021, 4:16 a.m. UTC
The previous vhost_net_cleanup is sufficient for freeing, calling
vhost_vdpa_del() in this case will lead an extra round of free. Note
that this kind of "double free" is safe since vhost_dev_cleanup() zero
the whole structure.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 net/vhost-vdpa.c | 11 -----------
 1 file changed, 11 deletions(-)

Comments

Stefano Garzarella June 23, 2021, 2:56 p.m. UTC | #1
On Mon, Jun 21, 2021 at 12:16:37PM +0800, Jason Wang wrote:
>The previous vhost_net_cleanup is sufficient for freeing, calling
>vhost_vdpa_del() in this case will lead an extra round of free. Note
>that this kind of "double free" is safe since vhost_dev_cleanup() zero
>the whole structure.
>
>Signed-off-by: Jason Wang <jasowang@redhat.com>
>---
> net/vhost-vdpa.c | 11 -----------
> 1 file changed, 11 deletions(-)

Reviewed-by: Stefano Garzarella <sgarzare@redhat.com>

>
>diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
>index 728e63ff54..f5689a7c32 100644
>--- a/net/vhost-vdpa.c
>+++ b/net/vhost-vdpa.c
>@@ -82,16 +82,6 @@ static int vhost_vdpa_net_check_device_id(struct vhost_net *net)
>     return ret;
> }
>
>-static void vhost_vdpa_del(NetClientState *ncs)
>-{
>-    VhostVDPAState *s;
>-    assert(ncs->info->type == NET_CLIENT_DRIVER_VHOST_VDPA);
>-    s = DO_UPCAST(VhostVDPAState, nc, ncs);
>-    if (s->vhost_net) {
>-        vhost_net_cleanup(s->vhost_net);
>-    }
>-}
>-
> static int vhost_vdpa_add(NetClientState *ncs, void *be)
> {
>     VhostNetOptions options;
>@@ -122,7 +112,6 @@ err:
>     if (net) {
>         vhost_net_cleanup(net);
>     }
>-    vhost_vdpa_del(ncs);
>     return -1;
> }
>
>-- 
>2.25.1
>
>
diff mbox series

Patch

diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
index 728e63ff54..f5689a7c32 100644
--- a/net/vhost-vdpa.c
+++ b/net/vhost-vdpa.c
@@ -82,16 +82,6 @@  static int vhost_vdpa_net_check_device_id(struct vhost_net *net)
     return ret;
 }
 
-static void vhost_vdpa_del(NetClientState *ncs)
-{
-    VhostVDPAState *s;
-    assert(ncs->info->type == NET_CLIENT_DRIVER_VHOST_VDPA);
-    s = DO_UPCAST(VhostVDPAState, nc, ncs);
-    if (s->vhost_net) {
-        vhost_net_cleanup(s->vhost_net);
-    }
-}
-
 static int vhost_vdpa_add(NetClientState *ncs, void *be)
 {
     VhostNetOptions options;
@@ -122,7 +112,6 @@  err:
     if (net) {
         vhost_net_cleanup(net);
     }
-    vhost_vdpa_del(ncs);
     return -1;
 }