On Wed, 19 Nov 2008 16:14:41 +0800 Li Zefan <lizf@xxxxxxxxxxxxxx> wrote: > Try this, and you'll get oops immediately: I guess that's wrong. > # cd Documentation/accounting/ > # gcc -o getdelays getdelays.c > # mount -t cgroup -o debug xxx /mnt > # ./getdelays -C /mnt/tasks > > Because a normal file's dentry->d_fsdata is a pointer to struct cftype, > not struct cgroup. > > After the patch, it returns EINVAL if we try to get cgroupstats > from a normal file. > > CC: Balbir Singh <balbir@xxxxxxxxxxxxxxxxxx> > Signed-off-by: Li Zefan <lizf@xxxxxxxxxxxxxx> > --- > kernel/cgroup.c | 7 +++++-- > 1 files changed, 5 insertions(+), 2 deletions(-) > > diff --git a/kernel/cgroup.c b/kernel/cgroup.c > index 358e775..f6f5219 100644 > --- a/kernel/cgroup.c > +++ b/kernel/cgroup.c > @@ -2039,10 +2039,13 @@ int cgroupstats_build(struct cgroupstats *stats, struct dentry *dentry) > struct cgroup *cgrp; > struct cgroup_iter it; > struct task_struct *tsk; > + > /* > - * Validate dentry by checking the superblock operations > + * Validate dentry by checking the superblock operations, > + * and make sure it's a directory. > */ > - if (dentry->d_sb->s_op != &cgroup_ops) > + if (dentry->d_sb->s_op != &cgroup_ops || > + !S_ISDIR(dentry->d_inode->i_mode)) > goto err; > > ret = 0; The patch applies OK to 2.6.25, 2.6.26 and to 2.6.27. I marked it as needing backport to those kernel versions. Please let me know if that was inappropriate. _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers