"return early" before write too Signed-off-by: Uri Lublin <uril@xxxxxxxxxx> --- Alternatively, change the read part such that: if (*vportp && FD_ISSET((*vportp)->fd, readfds)) vdagent_virtio_port_do_read if (*vportp && FD_ISSET((*vportp)->fd, writefds)) vdagent_virtio_port_do_write --- src/vdagentd/virtio-port.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/vdagentd/virtio-port.c b/src/vdagentd/virtio-port.c index 3ae7f22..af5bd58 100644 --- a/src/vdagentd/virtio-port.c +++ b/src/vdagentd/virtio-port.c @@ -172,7 +172,10 @@ void vdagent_virtio_port_handle_fds(struct vdagent_virtio_port **vportp, if (FD_ISSET((*vportp)->fd, readfds)) vdagent_virtio_port_do_read(vportp); - if (*vportp && FD_ISSET((*vportp)->fd, writefds)) + if (!*vportp) /* may have been destroyed in do_read */ + return; + + if (FD_ISSET((*vportp)->fd, writefds)) vdagent_virtio_port_do_write(vportp); } -- 2.21.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel