From: Eugenio Pérez <[email protected]> This change is used in later commits so we can avoid the removal of the netclient if it is delayed.
No functional change intended. Reviewed-by: Si-Wei Liu <[email protected]> Acked-by: Jason Wang <[email protected]> Signed-off-by: Eugenio Pérez <[email protected]> Signed-off-by: Jason Wang <[email protected]> (cherry picked from commit db0d4017f9b9e87f962b35dd19a4912bbfcd3cbc) (Mjt: pick this one up for the following change, "net: move backend cleanup to NIC cleanup") Signed-off-by: Michael Tokarev <[email protected]> diff --git a/net/net.c b/net/net.c index 0520bc1681..11e19d3bed 100644 --- a/net/net.c +++ b/net/net.c @@ -375,9 +375,12 @@ NetClientState *qemu_get_peer(NetClientState *nc, int queue_index) return ncs->peer; } -static void qemu_cleanup_net_client(NetClientState *nc) +static void qemu_cleanup_net_client(NetClientState *nc, + bool remove_from_net_clients) { - QTAILQ_REMOVE(&net_clients, nc, next); + if (remove_from_net_clients) { + QTAILQ_REMOVE(&net_clients, nc, next); + } if (nc->info->cleanup) { nc->info->cleanup(nc); @@ -436,14 +439,14 @@ void qemu_del_net_client(NetClientState *nc) } for (i = 0; i < queues; i++) { - qemu_cleanup_net_client(ncs[i]); + qemu_cleanup_net_client(ncs[i], true); } return; } for (i = 0; i < queues; i++) { - qemu_cleanup_net_client(ncs[i]); + qemu_cleanup_net_client(ncs[i], true); qemu_free_net_client(ncs[i]); } } @@ -468,7 +471,7 @@ void qemu_del_nic(NICState *nic) for (i = queues - 1; i >= 0; i--) { NetClientState *nc = qemu_get_subqueue(nic, i); - qemu_cleanup_net_client(nc); + qemu_cleanup_net_client(nc, true); qemu_free_net_client(nc); } -- 2.39.5
