Contributors: 17
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
Eric W. Biedermann |
148 |
36.10% |
11 |
23.40% |
Al Viro |
92 |
22.44% |
6 |
12.77% |
David Howells |
47 |
11.46% |
3 |
6.38% |
Linus Torvalds (pre-git) |
22 |
5.37% |
11 |
23.40% |
Andrey Vagin |
21 |
5.12% |
3 |
6.38% |
Jakub Kiciński |
20 |
4.88% |
1 |
2.13% |
Carlos Neira |
17 |
4.15% |
1 |
2.13% |
Andrew Morton |
11 |
2.68% |
1 |
2.13% |
Aditya Kali |
10 |
2.44% |
1 |
2.13% |
Kirill V Tkhai |
8 |
1.95% |
2 |
4.26% |
Olaf Dietsche |
4 |
0.98% |
1 |
2.13% |
Christian Brauner |
3 |
0.73% |
1 |
2.13% |
Denis V. Lunev |
2 |
0.49% |
1 |
2.13% |
Aleksa Sarai |
2 |
0.49% |
1 |
2.13% |
Greg Kroah-Hartman |
1 |
0.24% |
1 |
2.13% |
Kees Cook |
1 |
0.24% |
1 |
2.13% |
Christoph Hellwig |
1 |
0.24% |
1 |
2.13% |
Total |
410 |
|
47 |
|
/* SPDX-License-Identifier: GPL-2.0 */
/*
* procfs namespace bits
*/
#ifndef _LINUX_PROC_NS_H
#define _LINUX_PROC_NS_H
#include <linux/ns_common.h>
struct pid_namespace;
struct nsset;
struct path;
struct task_struct;
struct inode;
struct proc_ns_operations {
const char *name;
const char *real_ns_name;
int type;
struct ns_common *(*get)(struct task_struct *task);
void (*put)(struct ns_common *ns);
int (*install)(struct nsset *nsset, struct ns_common *ns);
struct user_namespace *(*owner)(struct ns_common *ns);
struct ns_common *(*get_parent)(struct ns_common *ns);
} __randomize_layout;
extern const struct proc_ns_operations netns_operations;
extern const struct proc_ns_operations utsns_operations;
extern const struct proc_ns_operations ipcns_operations;
extern const struct proc_ns_operations pidns_operations;
extern const struct proc_ns_operations pidns_for_children_operations;
extern const struct proc_ns_operations userns_operations;
extern const struct proc_ns_operations mntns_operations;
extern const struct proc_ns_operations cgroupns_operations;
extern const struct proc_ns_operations timens_operations;
extern const struct proc_ns_operations timens_for_children_operations;
/*
* We always define these enumerators
*/
enum {
PROC_ROOT_INO = 1,
PROC_IPC_INIT_INO = 0xEFFFFFFFU,
PROC_UTS_INIT_INO = 0xEFFFFFFEU,
PROC_USER_INIT_INO = 0xEFFFFFFDU,
PROC_PID_INIT_INO = 0xEFFFFFFCU,
PROC_CGROUP_INIT_INO = 0xEFFFFFFBU,
PROC_TIME_INIT_INO = 0xEFFFFFFAU,
};
#ifdef CONFIG_PROC_FS
extern int proc_alloc_inum(unsigned int *pino);
extern void proc_free_inum(unsigned int inum);
#else /* CONFIG_PROC_FS */
static inline int proc_alloc_inum(unsigned int *inum)
{
*inum = 1;
return 0;
}
static inline void proc_free_inum(unsigned int inum) {}
#endif /* CONFIG_PROC_FS */
static inline int ns_alloc_inum(struct ns_common *ns)
{
atomic_long_set(&ns->stashed, 0);
return proc_alloc_inum(&ns->inum);
}
#define ns_free_inum(ns) proc_free_inum((ns)->inum)
#define get_proc_ns(inode) ((struct ns_common *)(inode)->i_private)
extern int ns_get_path(struct path *path, struct task_struct *task,
const struct proc_ns_operations *ns_ops);
typedef struct ns_common *ns_get_path_helper_t(void *);
extern int ns_get_path_cb(struct path *path, ns_get_path_helper_t ns_get_cb,
void *private_data);
extern bool ns_match(const struct ns_common *ns, dev_t dev, ino_t ino);
extern int ns_get_name(char *buf, size_t size, struct task_struct *task,
const struct proc_ns_operations *ns_ops);
extern void nsfs_init(void);
#endif /* _LINUX_PROC_NS_H */