From e2b3aa25c512b94b755d93de23bec7af81d4b7d9 Mon Sep 17 00:00:00 2001 From: Daniel Rosenberg Date: Tue, 16 Jul 2019 18:09:39 -0700 Subject: [PATCH] ANDROID: Add show_options2 to view private mount data Exposes private fs data via show_options2 Bug: 120446149 Change-Id: I2d1c06fae274eeac03ac1924ef162f7bbb2f29d0 Signed-off-by: Daniel Rosenberg --- fs/proc_namespace.c | 8 ++++++-- include/linux/fs.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/fs/proc_namespace.c b/fs/proc_namespace.c index e16fb8f2049e..8fde658fdb11 100644 --- a/fs/proc_namespace.c +++ b/fs/proc_namespace.c @@ -121,7 +121,9 @@ static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt) if (err) goto out; show_mnt_opts(m, mnt); - if (sb->s_op->show_options) + if (sb->s_op->show_options2) + err = sb->s_op->show_options2(mnt, m, mnt_path.dentry); + else if (sb->s_op->show_options) err = sb->s_op->show_options(m, mnt_path.dentry); seq_puts(m, " 0 0\n"); out: @@ -183,7 +185,9 @@ static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt) err = show_sb_opts(m, sb); if (err) goto out; - if (sb->s_op->show_options) + if (sb->s_op->show_options2) { + err = sb->s_op->show_options2(mnt, m, mnt->mnt_root); + } else if (sb->s_op->show_options) err = sb->s_op->show_options(m, mnt->mnt_root); seq_putc(m, '\n'); out: diff --git a/include/linux/fs.h b/include/linux/fs.h index f16ecfde97d5..36b44d6b8cd6 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h @@ -1939,6 +1939,7 @@ struct super_operations { void (*umount_begin) (struct super_block *); int (*show_options)(struct seq_file *, struct dentry *); + int (*show_options2)(struct vfsmount *,struct seq_file *, struct dentry *); int (*show_devname)(struct seq_file *, struct dentry *); int (*show_path)(struct seq_file *, struct dentry *); int (*show_stats)(struct seq_file *, struct dentry *);