On Wed, May 27, 2020 at 01:19:01PM +0200, Christian Brauner wrote: > +void seccomp_filter_notify(const struct task_struct *tsk) > +{ > + struct seccomp_filter *orig = tsk->seccomp.filter; > + > + while (orig && refcount_dec_and_test(&orig->live)) { > + if (waitqueue_active(&orig->wqh)) > + wake_up_poll(&orig->wqh, EPOLLHUP); > + orig = orig->prev; > + } > +} > + Any reason not to write this as: for (orig = tsk->seccomp.filter; refcount_dec_and_test(&orig->live); orig = orig->prev)? Also, for those of us who are plumbing in the likes of Go code into the listener, where we don't have direct access to the epoll interface (at least not out of the box), what do you think about exposing this on the RECV ioctl? Or, do you think we should lump that into the "v2" receive API? Either way, this seems useful, as right now, we're intertwining process tree lifetime with manager lifetime. This seems cleaner. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/containers