vhost-user: Factor out duplicated slave_fd teardown code
Signed-off-by: Greg Kurz <groug@kaod.org> Message-Id: <20210312092212.782255-4-groug@kaod.org> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
9e06080bed
commit
de62e49460
@ -1392,6 +1392,13 @@ static int vhost_user_slave_handle_vring_host_notifier(struct vhost_dev *dev,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void close_slave_channel(struct vhost_user *u)
|
||||||
|
{
|
||||||
|
qemu_set_fd_handler(u->slave_fd, NULL, NULL, NULL);
|
||||||
|
close(u->slave_fd);
|
||||||
|
u->slave_fd = -1;
|
||||||
|
}
|
||||||
|
|
||||||
static void slave_read(void *opaque)
|
static void slave_read(void *opaque)
|
||||||
{
|
{
|
||||||
struct vhost_dev *dev = opaque;
|
struct vhost_dev *dev = opaque;
|
||||||
@ -1507,9 +1514,7 @@ static void slave_read(void *opaque)
|
|||||||
goto fdcleanup;
|
goto fdcleanup;
|
||||||
|
|
||||||
err:
|
err:
|
||||||
qemu_set_fd_handler(u->slave_fd, NULL, NULL, NULL);
|
close_slave_channel(u);
|
||||||
close(u->slave_fd);
|
|
||||||
u->slave_fd = -1;
|
|
||||||
|
|
||||||
fdcleanup:
|
fdcleanup:
|
||||||
for (i = 0; i < fdsize; i++) {
|
for (i = 0; i < fdsize; i++) {
|
||||||
@ -1560,9 +1565,7 @@ static int vhost_setup_slave_channel(struct vhost_dev *dev)
|
|||||||
out:
|
out:
|
||||||
close(sv[1]);
|
close(sv[1]);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
qemu_set_fd_handler(u->slave_fd, NULL, NULL, NULL);
|
close_slave_channel(u);
|
||||||
close(u->slave_fd);
|
|
||||||
u->slave_fd = -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -1915,9 +1918,7 @@ static int vhost_user_backend_cleanup(struct vhost_dev *dev)
|
|||||||
u->postcopy_fd.handler = NULL;
|
u->postcopy_fd.handler = NULL;
|
||||||
}
|
}
|
||||||
if (u->slave_fd >= 0) {
|
if (u->slave_fd >= 0) {
|
||||||
qemu_set_fd_handler(u->slave_fd, NULL, NULL, NULL);
|
close_slave_channel(u);
|
||||||
close(u->slave_fd);
|
|
||||||
u->slave_fd = -1;
|
|
||||||
}
|
}
|
||||||
g_free(u->region_rb);
|
g_free(u->region_rb);
|
||||||
u->region_rb = NULL;
|
u->region_rb = NULL;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user