On Wed, Feb 03, 2021 at 09:21:32AM +0100, Jürgen Groß wrote: > [...] > This shouldn't happen in case we are closing the socket actively. > > In the end we should just do a talloc_free(conn) in > ignore_connection() if it is a socket based one. This should revert > the critical modification of the XSA-115 fixes for sockets while > keeping the desired effect for domain connections.
Hello here's an updated patch which works for me. Does anyone see a problem with it ? If not I will submit it for commit. -- Manuel Bouyer <bou...@antioche.eu.org> NetBSD: 26 ans d'experience feront toujours la difference --
--- xenstored_core.c.orig 2021-02-02 18:06:33.389316841 +0100 +++ xenstored_core.c 2021-02-03 12:46:17.204376338 +0100 @@ -397,9 +397,12 @@ !list_empty(&conn->out_list))) *ptimeout = 0; } else { - short events = POLLIN|POLLPRI; - if (!list_empty(&conn->out_list)) - events |= POLLOUT; + short events = 0; + if (!conn->is_ignored) { + events |= POLLIN|POLLPRI; + if (!list_empty(&conn->out_list)) + events |= POLLOUT; + } conn->pollfd_idx = set_fd(conn->fd, events); } } @@ -1440,6 +1443,9 @@ talloc_free(conn->in); conn->in = NULL; + /* if this is a socket connection, drop it now */ + if (conn->fd >= 0) + talloc_free(conn); } static const char *sockmsg_string(enum xsd_sockmsg_type type)