cgroups: remove events before destroying subsystem state objects
Events should be removed after rmdir of cgroup directory, but before destroying subsystem state objects. Let's take reference to cgroup directory dentry to do that. Signed-off-by: Kirill A. Shutemov <kirill@shutemov.name> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hioryu@jp.fujitsu.com> Cc: Paul Menage <menage@google.com> Acked-by: Li Zefan <lizf@cn.fujitsu.com> Cc: Balbir Singh <balbir@linux.vnet.ibm.com> Cc: Pavel Emelyanov <xemul@openvz.org> Cc: Dan Malek <dan@embeddedalley.com> Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
4ab78683c1
commit
a0a4db548e
@@ -2994,6 +2994,7 @@ static void cgroup_event_remove(struct work_struct *work)
|
||||
|
||||
eventfd_ctx_put(event->eventfd);
|
||||
kfree(event);
|
||||
dput(cgrp->dentry);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3114,6 +3115,13 @@ static int cgroup_write_event_control(struct cgroup *cgrp, struct cftype *cft,
|
||||
goto fail;
|
||||
}
|
||||
|
||||
/*
|
||||
* Events should be removed after rmdir of cgroup directory, but before
|
||||
* destroying subsystem state objects. Let's take reference to cgroup
|
||||
* directory dentry to do that.
|
||||
*/
|
||||
dget(cgrp->dentry);
|
||||
|
||||
spin_lock(&cgrp->event_list_lock);
|
||||
list_add(&event->list, &cgrp->event_list);
|
||||
spin_unlock(&cgrp->event_list_lock);
|
||||
|
Reference in New Issue
Block a user