Skip to contentSkip to conversation

cgroup: fail if monitored file and event_control are in different cgroup

PATCH Applied Li Zefan 3 participants 3 messages Feb 18, 2013 cgroup

lore
Share & tools
lore

Li Zefan

author
#0 lore raw

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
index 65c8101..a41673c 100644
@@ -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
Acked-by on v1 1/1
#1 lore raw
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.

Signature · 1 line
 Kirill A. Shutemov
maintainer Applied
#2 lore raw
In reply to Li Zefan
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.

Applied to cgroup/for-3.9.

Thanks.

Signature · 1 line
tejun