Quoting sukadev@xxxxxxxxxx (sukadev@xxxxxxxxxx): > > >From 8c20ae3e9d5e051791a99b9060326069432d7fff Mon Sep 17 00:00:00 2001 > From: Sukadev Bhattiprolu <sukadev@xxxxxxxxxxxxxxxxxx> > Date: Tue, 9 Sep 2008 18:37:55 -0700 > Subject: [PATCH 07/10] Update ptmx permissions during remount > > By default, /dev/pts/ptmx node starts out with 0000 permissions. While > user's can chmod /dev/pts/ptmx, it maybe easier for legacy systems to > update /etc/fstab and change the permissions using ptmxmode option. > > This patch caches the dentry for ptmx node and uses it to update permissions > of ptmx node during remount (code will be enabled in a follow-on patch). > > Signed-off-by: Sukadev Bhattiprolu <sukadev@xxxxxxxxxx> As an alternative, you could just lookup_one_len("ptmx", sb->s_root, 4) to avoid caching. Not sure whether that would be considered better though, so Acked-by: Serge Hallyn <serue@xxxxxxxxxx> -serge > --- > fs/devpts/inode.c | 28 +++++++++++++++++++++++++++- > 1 files changed, 27 insertions(+), 1 deletions(-) > > diff --git a/fs/devpts/inode.c b/fs/devpts/inode.c > index 17e14f5..6b56255 100644 > --- a/fs/devpts/inode.c > +++ b/fs/devpts/inode.c > @@ -68,6 +68,7 @@ static match_table_t tokens = { > struct pts_fs_info { > struct ida allocated_ptys; > struct pts_mount_opts mount_opts; > + struct dentry *ptmx_dentry; > }; > > static inline struct pts_fs_info *DEVPTS_SB(struct super_block *sb) > @@ -184,14 +185,39 @@ static int mknod_ptmx(struct super_block *sb) > > return 0; > } > + > +static void update_ptmx_mode(struct pts_fs_info *fsi) > +{ > + struct inode *inode; > + if (fsi->ptmx_dentry) { > + inode = fsi->ptmx_dentry->d_inode; > + inode->i_mode = S_IFCHR|fsi->mount_opts.ptmxmode; > + } > +} > +#else > +static inline void update_ptmx_mode(struct pts_fs_info *fsi) > +{ > + return; > +} > #endif > > static int devpts_remount(struct super_block *sb, int *flags, char *data) > { > + int err; > struct pts_fs_info *fsi = DEVPTS_SB(sb); > struct pts_mount_opts *opts = &fsi->mount_opts; > > - return parse_mount_options(data, opts); > + err = parse_mount_options(data, opts); > + > + /* > + * parse_mount_options() restores options to default values > + * before parsing and may have changed ptmxmode. So, update the > + * mode in the inode too. Bogus options don't fail the remount, > + * so do this even on error return. > + */ > + update_ptmx_mode(fsi); > + > + return err; > } > > static int devpts_show_options(struct seq_file *seq, struct vfsmount *vfs) > -- > 1.5.2.5 _______________________________________________ Containers mailing list Containers@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linux-foundation.org/mailman/listinfo/containers