|
@@ -381,9 +381,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);
|
|
@@ -442,14 +445,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]);
|
|
|
}
|
|
|
}
|
|
@@ -474,7 +477,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);
|
|
|
}
|
|
|
|