On Fri, Nov 03, 2023 at 05:20:53PM +0100, Stefano Brivio wrote: > On Thu, 12 Oct 2023 12:51:06 +1100 > David Gibson wrote: > > > tcp_splice_epoll_ctl() removes both sockets from the epoll set if called > > when conn->flags & CLOSING. This will always happen immediately after > > setting that flag, since conn_flag_do() makes the call itself. That's also > > the _only_ time it can happen: we perform the EPOLL_CTL_DEL without > > clearing the conn->in_epoll flag, meaning that any further calls to > > tcp_splice_epoll_ctl() would attempt EPOLL_CTL_MOD, which would necessarily > > fail since the fds are no longer in the epoll. > > > > The EPOLL_CTL_DEL path in tcp_splice_epoll_ctl() has essentially zero > > overlap with anything else the function does, so just move them to be > > open coded in conn_flag_do(). > > > > Caveat: this does require kernel 2.6.9 or later, in order to pass NULL as > > the event structure for epoll_ctl(). I _think_ we already require newer > > kernels than that for other features. > > Yes, we do, we need at least 3.13 for unprivileged user namespaces. Thanks, message updated accordingly. -- David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson