diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/proc_ns.h | 2 | ||||
-rw-r--r-- | include/linux/user_namespace.h | 7 | ||||
-rw-r--r-- | include/uapi/linux/nsfs.h | 13 |
3 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/proc_ns.h b/include/linux/proc_ns.h index de0e7719d4c5..12cb8bd81d2d 100644 --- a/include/linux/proc_ns.h +++ b/include/linux/proc_ns.h | |||
@@ -18,6 +18,8 @@ struct proc_ns_operations { | |||
18 | struct ns_common *(*get)(struct task_struct *task); | 18 | struct ns_common *(*get)(struct task_struct *task); |
19 | void (*put)(struct ns_common *ns); | 19 | void (*put)(struct ns_common *ns); |
20 | int (*install)(struct nsproxy *nsproxy, struct ns_common *ns); | 20 | int (*install)(struct nsproxy *nsproxy, struct ns_common *ns); |
21 | struct user_namespace *(*owner)(struct ns_common *ns); | ||
22 | struct ns_common *(*get_parent)(struct ns_common *ns); | ||
21 | }; | 23 | }; |
22 | 24 | ||
23 | extern const struct proc_ns_operations netns_operations; | 25 | extern const struct proc_ns_operations netns_operations; |
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h index 30ffe10cda18..eb209d4523f5 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h | |||
@@ -106,6 +106,8 @@ extern ssize_t proc_setgroups_write(struct file *, const char __user *, size_t, | |||
106 | extern int proc_setgroups_show(struct seq_file *m, void *v); | 106 | extern int proc_setgroups_show(struct seq_file *m, void *v); |
107 | extern bool userns_may_setgroups(const struct user_namespace *ns); | 107 | extern bool userns_may_setgroups(const struct user_namespace *ns); |
108 | extern bool current_in_userns(const struct user_namespace *target_ns); | 108 | extern bool current_in_userns(const struct user_namespace *target_ns); |
109 | |||
110 | struct ns_common *ns_get_owner(struct ns_common *ns); | ||
109 | #else | 111 | #else |
110 | 112 | ||
111 | static inline struct user_namespace *get_user_ns(struct user_namespace *ns) | 113 | static inline struct user_namespace *get_user_ns(struct user_namespace *ns) |
@@ -139,6 +141,11 @@ static inline bool current_in_userns(const struct user_namespace *target_ns) | |||
139 | { | 141 | { |
140 | return true; | 142 | return true; |
141 | } | 143 | } |
144 | |||
145 | static inline struct ns_common *ns_get_owner(struct ns_common *ns) | ||
146 | { | ||
147 | return ERR_PTR(-EPERM); | ||
148 | } | ||
142 | #endif | 149 | #endif |
143 | 150 | ||
144 | #endif /* _LINUX_USER_H */ | 151 | #endif /* _LINUX_USER_H */ |
diff --git a/include/uapi/linux/nsfs.h b/include/uapi/linux/nsfs.h new file mode 100644 index 000000000000..3af617230d1b --- /dev/null +++ b/include/uapi/linux/nsfs.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #ifndef __LINUX_NSFS_H | ||
2 | #define __LINUX_NSFS_H | ||
3 | |||
4 | #include <linux/ioctl.h> | ||
5 | |||
6 | #define NSIO 0xb7 | ||
7 | |||
8 | /* Returns a file descriptor that refers to an owning user namespace */ | ||
9 | #define NS_GET_USERNS _IO(NSIO, 0x1) | ||
10 | /* Returns a file descriptor that refers to a parent namespace */ | ||
11 | #define NS_GET_PARENT _IO(NSIO, 0x2) | ||
12 | |||
13 | #endif /* __LINUX_NSFS_H */ | ||