aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/cgroup.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/cgroup.c b/kernel/cgroup.c
index feda81487be4..b5c64327e712 100644
--- a/kernel/cgroup.c
+++ b/kernel/cgroup.c
@@ -3856,6 +3856,7 @@ static int cgroup_write_event_control(struct cgroup *cgrp, struct cftype *cft,
3856 const char *buffer) 3856 const char *buffer)
3857{ 3857{
3858 struct cgroup_event *event = NULL; 3858 struct cgroup_event *event = NULL;
3859 struct cgroup *cgrp_cfile;
3859 unsigned int efd, cfd; 3860 unsigned int efd, cfd;
3860 struct file *efile = NULL; 3861 struct file *efile = NULL;
3861 struct file *cfile = NULL; 3862 struct file *cfile = NULL;
@@ -3911,6 +3912,16 @@ static int cgroup_write_event_control(struct cgroup *cgrp, struct cftype *cft,
3911 goto fail; 3912 goto fail;
3912 } 3913 }
3913 3914
3915 /*
3916 * The file to be monitored must be in the same cgroup as
3917 * cgroup.event_control is.
3918 */
3919 cgrp_cfile = __d_cgrp(cfile->f_dentry->d_parent);
3920 if (cgrp_cfile != cgrp) {
3921 ret = -EINVAL;
3922 goto fail;
3923 }
3924
3914 if (!event->cft->register_event || !event->cft->unregister_event) { 3925 if (!event->cft->register_event || !event->cft->unregister_event) {
3915 ret = -EINVAL; 3926 ret = -EINVAL;
3916 goto fail; 3927 goto fail;