There're three bugs. - If thread A is removing a cgroup, while thread B is closing an eventfd, the two threads might free the same cgroup event and thus crash the kernel. This is fixed by patch #1 and patch #2. - If there're multiple threads are blocking in read() on the same eventfd, and someone removes the cgroup, only one thread will be notified and unblocked, and others won't be unblocked until those threads are killed. - If thread A is removing a cgroup, while thread B is registering a cgroup event and then read the eventfd, it might block until the thread is killed. These two are fixed by patch #3. 0001-eventfd-Introduce-eventfd_signal_hangup.patch 0002-cgroup-fix-cgroup_rmdir-vs-close-eventfd-race.patch 0003-eventfd-make-operations-on-eventfd-return-EIDRM-if-i.patch 0004-cgroup-adapt-to-the-new-way-of-detecting-cgroup-remo.patch -- fs/eventfd.c | 30 ++++++++++++++++++++++++++++++ include/linux/eventfd.h | 5 +++++ kernel/cgroup.c | 30 ++++++++++++++++++------------ tools/cgroup/cgroup_event_listener.c | 12 +++++------- 4 files changed, 58 insertions(+), 19 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe cgroups" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html