diff options
author | Li Zefan <lizefan@huawei.com> | 2013-02-18 11:56:14 +0100 |
---|---|---|
committer | Tejun Heo <tj@kernel.org> | 2013-02-18 18:17:24 +0100 |
commit | 810cbee4fad570ff167132d4ecf247d99c48f71d (patch) | |
tree | 2806f56a033f43b17ad2c547b2153941c0e77f40 /drivers/ide/Kconfig | |
parent | cpuset: fix cpuset_print_task_mems_allowed() vs rename() race (diff) | |
download | linux-810cbee4fad570ff167132d4ecf247d99c48f71d.tar.xz linux-810cbee4fad570ff167132d4ecf247d99c48f71d.zip |
cgroup: fix cgroup_rmdir() vs close(eventfd) race
commit 205a872bd6f9a9a09ef035ef1e90185a8245cc58 ("cgroup: fix lockdep
warning for event_control") solved a deadlock by introducing a new
bug.
Move cgrp->event_list to a temporary list doesn't mean you can traverse
this list locklessly, because at the same time cgroup_event_wake() can
be called and remove the event from the list. The result of this race
is disastrous.
We adopt the way how kvm irqfd code implements race-free event removal,
which is now described in the comments in cgroup_event_wake().
v3:
- call eventfd_signal() no matter it's eventfd close or cgroup removal
that removes the cgroup event.
Acked-by: Kirill A. Shutemov <kirill@shutemov.name>
Signed-off-by: Li Zefan <lizefan@huawei.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
Diffstat (limited to 'drivers/ide/Kconfig')
0 files changed, 0 insertions, 0 deletions