cgroup: fail if monitored file and event_control are in different cgroup
PATCH 1/1 cgroup: fail if monitored file and event_control are in different cgroup
If we pass fd of memory.usage_in_bytes of cgroup A to cgroup.event_control of cgroup B, then we won't get memory usage notification from A but B!
What's worse, if A and B are in different mount hierarchy, we'll end up accessing NULL pointer!
Disallow this kind of invalid usage.
--- kernel/cgroup.c | 11 +++++++++++ 1 file changed, 11 insertions(+)
kernel/cgroup.c +11 -0
@@ -3911,6 +3911,7 @@ static int cgroup_write_event_control(struct cgroup *cgrp, struct cftype *cft, const char *buffer) {struct cgroup_event *event =NULL ; +struct cgroup *cgrp_cfile;unsigned int efd, cfd;struct file *efile =NULL ;struct file *cfile =NULL ;
@@ -3966,6 +3967,16 @@ static int cgroup_write_event_control(struct cgroup *cgrp, struct cftype *cft, goto fail; } +/* +* The file to be monitored must be in the same cgroup as +* cgroup.event_control is. +*/ + cgrp_cfile =__d_cgrp (cfile->f_dentry->d_parent); +if (cgrp_cfile != cgrp) { + ret = -EINVAL ; + goto fail; + } +if (!event->cft->register_event || !event->cft->unregister_event) { ret = -EINVAL ; goto fail;
Signature · 1 line
1.8.0.2
Quoted 9 lines · Li Zefan
If we pass fd of memory.usage_in_bytes of cgroup A to cgroup.event_control of cgroup B, then we won't get memory usage notification from A but B!
What's worse, if A and B are in different mount hierarchy, we'll end up accessing NULL pointer!
Disallow this kind of invalid usage.
Signed-off-by Li Zefan <[email protected]>
Signature · 1 line
Kirill A. Shutemov
Quoted 9 lines · Li Zefan
If we pass fd of memory.usage_in_bytes of cgroup A to cgroup.event_control of cgroup B, then we won't get memory usage notification from A but B!
What's worse, if A and B are in different mount hierarchy, we'll end up accessing NULL pointer!
Disallow this kind of invalid usage.
Signed-off-by Li Zefan <[email protected]>
Applied to cgroup/for-3.9.
Thanks.
Signature · 1 line
tejun