(forgot to cc Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>, added) On 2013/2/2 14:50, Li Zefan wrote: > 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