lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 26 Nov 2015 23:17:45 -0600 From: "Serge E. Hallyn" <serge.hallyn@...ntu.com> To: Tejun Heo <tj@...nel.org> Cc: serge@...lyn.com, linux-kernel@...r.kernel.org, adityakali@...gle.com, linux-api@...r.kernel.org, containers@...ts.linux-foundation.org, cgroups@...r.kernel.org, lxc-devel@...ts.linuxcontainers.org, akpm@...ux-foundation.org, ebiederm@...ssion.com Subject: Re: [PATCH 7/8] cgroup: mount cgroupns-root when inside non-init cgroupns On Tue, Nov 24, 2015 at 12:16:10PM -0500, Tejun Heo wrote: > Hello, > > On Mon, Nov 16, 2015 at 01:51:44PM -0600, serge@...lyn.com wrote: > > +struct dentry *kernfs_obtain_root(struct super_block *sb, > > + struct kernfs_node *kn) > > +{ > > + struct dentry *dentry; > > + struct inode *inode; > > + > > + BUG_ON(sb->s_op != &kernfs_sops); > > + > > + /* inode for the given kernfs_node should already exist. */ > > + inode = ilookup(sb, kn->ino); > > + if (!inode) { > > + pr_debug("kernfs: could not get inode for '"); > > + pr_cont_kernfs_path(kn); > > + pr_cont("'.\n"); > > + return ERR_PTR(-EINVAL); > > + } > > Hmmm... but inode might not have been instantiated yet. Why not use > kernfs_get_inode()? > > > + /* instantiate and link root dentry */ > > + dentry = d_obtain_root(inode); > > + if (!dentry) { > > + pr_debug("kernfs: could not get dentry for '"); > > + pr_cont_kernfs_path(kn); > > + pr_cont("'.\n"); > > + return ERR_PTR(-ENOMEM); > > + } > > + > > + /* If this is a new dentry, set it up. We need kernfs_mutex because this > > + * may be called by callers other than kernfs_fill_super. */ > > Formatting. > > > + mutex_lock(&kernfs_mutex); > > + if (!dentry->d_fsdata) { > > + kernfs_get(kn); > > + dentry->d_fsdata = kn; > > + } else { > > + WARN_ON(dentry->d_fsdata != kn); > > + } > > + mutex_unlock(&kernfs_mutex); > > + > > + return dentry; > > +} > > Wouldn't it be simpler to walk dentry from kernfs root than > duplicating dentry instantiation? Sorry I don't think I'm following. Are you suggesting walking the kn->parent chain backward and doing d_lookup() at each point starting with sb->s_root? -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists