diff options
Diffstat (limited to 'include/linux/user_namespace.h')
| -rw-r--r-- | include/linux/user_namespace.h | 15 | 
1 files changed, 14 insertions, 1 deletions
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h index e95372654f09..8297e5b341d8 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h @@ -3,6 +3,7 @@  #include <linux/kref.h>  #include <linux/nsproxy.h> +#include <linux/ns_common.h>  #include <linux/sched.h>  #include <linux/err.h> @@ -17,6 +18,10 @@ struct uid_gid_map {	/* 64 bytes -- 1 cache line */  	} extent[UID_GID_MAP_MAX_EXTENTS];  }; +#define USERNS_SETGROUPS_ALLOWED 1UL + +#define USERNS_INIT_FLAGS USERNS_SETGROUPS_ALLOWED +  struct user_namespace {  	struct uid_gid_map	uid_map;  	struct uid_gid_map	gid_map; @@ -26,7 +31,8 @@ struct user_namespace {  	int			level;  	kuid_t			owner;  	kgid_t			group; -	unsigned int		proc_inum; +	struct ns_common	ns; +	unsigned long		flags;  	/* Register of per-UID persistent keyrings for this namespace */  #ifdef CONFIG_PERSISTENT_KEYRINGS @@ -63,6 +69,9 @@ extern const struct seq_operations proc_projid_seq_operations;  extern ssize_t proc_uid_map_write(struct file *, const char __user *, size_t, loff_t *);  extern ssize_t proc_gid_map_write(struct file *, const char __user *, size_t, loff_t *);  extern ssize_t proc_projid_map_write(struct file *, const char __user *, size_t, loff_t *); +extern ssize_t proc_setgroups_write(struct file *, const char __user *, size_t, loff_t *); +extern int proc_setgroups_show(struct seq_file *m, void *v); +extern bool userns_may_setgroups(const struct user_namespace *ns);  #else  static inline struct user_namespace *get_user_ns(struct user_namespace *ns) @@ -87,6 +96,10 @@ static inline void put_user_ns(struct user_namespace *ns)  {  } +static inline bool userns_may_setgroups(const struct user_namespace *ns) +{ +	return true; +}  #endif  #endif /* _LINUX_USER_H */  |