From 40b532fbdcb2095da7152a1d08d9f0288524c223 Mon Sep 17 00:00:00 2001 From: Jason Andryuk Date: Wed, 10 Jun 2020 23:29:36 -0400 Subject: [PATCH] vchan-socket-proxy: Handle closing shared input/output_fd MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit input_fd & output_fd may be the same FD. In that case, mark both as -1 when closing one. That avoids a dangling FD reference. Signed-off-by: Jason Andryuk Acked-by: Wei Liu Reviewed-by: Marek Marczykowski-Górecki Release-acked-by: Paul Durrant --- tools/libvchan/vchan-socket-proxy.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/libvchan/vchan-socket-proxy.c b/tools/libvchan/vchan-socket-proxy.c index 3552783ec2..e1d959c6d1 100644 --- a/tools/libvchan/vchan-socket-proxy.c +++ b/tools/libvchan/vchan-socket-proxy.c @@ -349,6 +349,8 @@ int data_loop(struct vchan_proxy_state *state) libxenvchan_wait(state->ctrl); } close(state->input_fd); + if (state->input_fd == state->output_fd) + state->output_fd = -1; state->input_fd = -1; /* TODO: maybe signal the vchan client somehow? */ break; -- 2.39.5