linux/fs/proc_namespace.c

// SPDX-License-Identifier: GPL-2.0
/*
 * fs/proc_namespace.c - handling of /proc/<pid>/{mounts,mountinfo,mountstats}
 *
 * In fact, that's a piece of procfs; it's *almost* isolated from
 * the rest of fs/proc, but has rather close relationships with
 * fs/namespace.c, thus here instead of fs/proc
 *
 */
#include <linux/mnt_namespace.h>
#include <linux/nsproxy.h>
#include <linux/security.h>
#include <linux/fs_struct.h>
#include <linux/sched/task.h>

#include "proc/internal.h" /* only for get_proc_task() in ->open() */

#include "pnode.h"
#include "internal.h"

static __poll_t mounts_poll(struct file *file, poll_table *wait)
{}

struct proc_fs_opts {};

static int show_sb_opts(struct seq_file *m, struct super_block *sb)
{}

static void show_vfsmnt_opts(struct seq_file *m, struct vfsmount *mnt)
{}

static inline void mangle(struct seq_file *m, const char *s)
{}

static void show_type(struct seq_file *m, struct super_block *sb)
{}

static int show_vfsmnt(struct seq_file *m, struct vfsmount *mnt)
{}

static int show_mountinfo(struct seq_file *m, struct vfsmount *mnt)
{}

static int show_vfsstat(struct seq_file *m, struct vfsmount *mnt)
{}

static int mounts_open_common(struct inode *inode, struct file *file,
			      int (*show)(struct seq_file *, struct vfsmount *))
{}

static int mounts_release(struct inode *inode, struct file *file)
{}

static int mounts_open(struct inode *inode, struct file *file)
{}

static int mountinfo_open(struct inode *inode, struct file *file)
{}

static int mountstats_open(struct inode *inode, struct file *file)
{}

const struct file_operations proc_mounts_operations =;

const struct file_operations proc_mountinfo_operations =;

const struct file_operations proc_mountstats_operations =;