On Wed, Nov 19, 2008 at 12:14 AM, Li Zefan <lizf@xxxxxxxxxxxxxx> wrote: > Try this, and you'll get oops immediately: > # 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> Good catch, thanks. Acked-by: Paul Menage <menage@xxxxxxxxxx> > --- > 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; > -- > 1.5.4.rc3 > _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers