diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/cred.h | 2 | ||||
-rw-r--r-- | include/linux/init_task.h | 1 | ||||
-rw-r--r-- | include/linux/nsproxy.h | 1 | ||||
-rw-r--r-- | include/linux/sched.h | 1 | ||||
-rw-r--r-- | include/linux/user_namespace.h | 13 |
5 files changed, 7 insertions, 11 deletions
diff --git a/include/linux/cred.h b/include/linux/cred.h index 26c1ab179946..3282ee4318e7 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
@@ -60,6 +60,7 @@ do { \ | |||
60 | } while (0) | 60 | } while (0) |
61 | 61 | ||
62 | extern struct group_info *groups_alloc(int); | 62 | extern struct group_info *groups_alloc(int); |
63 | extern struct group_info init_groups; | ||
63 | extern void groups_free(struct group_info *); | 64 | extern void groups_free(struct group_info *); |
64 | extern int set_current_groups(struct group_info *); | 65 | extern int set_current_groups(struct group_info *); |
65 | extern int set_groups(struct cred *, struct group_info *); | 66 | extern int set_groups(struct cred *, struct group_info *); |
@@ -315,6 +316,7 @@ static inline void put_cred(const struct cred *_cred) | |||
315 | #define current_fsgid() (current_cred_xxx(fsgid)) | 316 | #define current_fsgid() (current_cred_xxx(fsgid)) |
316 | #define current_cap() (current_cred_xxx(cap_effective)) | 317 | #define current_cap() (current_cred_xxx(cap_effective)) |
317 | #define current_user() (current_cred_xxx(user)) | 318 | #define current_user() (current_cred_xxx(user)) |
319 | #define current_user_ns() (current_cred_xxx(user)->user_ns) | ||
318 | #define current_security() (current_cred_xxx(security)) | 320 | #define current_security() (current_cred_xxx(security)) |
319 | 321 | ||
320 | #define current_uid_gid(_uid, _gid) \ | 322 | #define current_uid_gid(_uid, _gid) \ |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 2597858035cd..959f5522d10a 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
@@ -57,7 +57,6 @@ extern struct nsproxy init_nsproxy; | |||
57 | .mnt_ns = NULL, \ | 57 | .mnt_ns = NULL, \ |
58 | INIT_NET_NS(net_ns) \ | 58 | INIT_NET_NS(net_ns) \ |
59 | INIT_IPC_NS(ipc_ns) \ | 59 | INIT_IPC_NS(ipc_ns) \ |
60 | .user_ns = &init_user_ns, \ | ||
61 | } | 60 | } |
62 | 61 | ||
63 | #define INIT_SIGHAND(sighand) { \ | 62 | #define INIT_SIGHAND(sighand) { \ |
diff --git a/include/linux/nsproxy.h b/include/linux/nsproxy.h index c8a768e59640..afad7dec1b36 100644 --- a/include/linux/nsproxy.h +++ b/include/linux/nsproxy.h | |||
@@ -27,7 +27,6 @@ struct nsproxy { | |||
27 | struct ipc_namespace *ipc_ns; | 27 | struct ipc_namespace *ipc_ns; |
28 | struct mnt_namespace *mnt_ns; | 28 | struct mnt_namespace *mnt_ns; |
29 | struct pid_namespace *pid_ns; | 29 | struct pid_namespace *pid_ns; |
30 | struct user_namespace *user_ns; | ||
31 | struct net *net_ns; | 30 | struct net *net_ns; |
32 | }; | 31 | }; |
33 | extern struct nsproxy init_nsproxy; | 32 | extern struct nsproxy init_nsproxy; |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 2036e9f26020..7f8015a3082e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
@@ -638,6 +638,7 @@ struct user_struct { | |||
638 | /* Hash table maintenance information */ | 638 | /* Hash table maintenance information */ |
639 | struct hlist_node uidhash_node; | 639 | struct hlist_node uidhash_node; |
640 | uid_t uid; | 640 | uid_t uid; |
641 | struct user_namespace *user_ns; | ||
641 | 642 | ||
642 | #ifdef CONFIG_USER_SCHED | 643 | #ifdef CONFIG_USER_SCHED |
643 | struct task_group *tg; | 644 | struct task_group *tg; |
diff --git a/include/linux/user_namespace.h b/include/linux/user_namespace.h index b5f41d4c2eec..315bcd375224 100644 --- a/include/linux/user_namespace.h +++ b/include/linux/user_namespace.h | |||
@@ -12,7 +12,7 @@ | |||
12 | struct user_namespace { | 12 | struct user_namespace { |
13 | struct kref kref; | 13 | struct kref kref; |
14 | struct hlist_head uidhash_table[UIDHASH_SZ]; | 14 | struct hlist_head uidhash_table[UIDHASH_SZ]; |
15 | struct user_struct *root_user; | 15 | struct user_struct *creator; |
16 | }; | 16 | }; |
17 | 17 | ||
18 | extern struct user_namespace init_user_ns; | 18 | extern struct user_namespace init_user_ns; |
@@ -26,8 +26,7 @@ static inline struct user_namespace *get_user_ns(struct user_namespace *ns) | |||
26 | return ns; | 26 | return ns; |
27 | } | 27 | } |
28 | 28 | ||
29 | extern struct user_namespace *copy_user_ns(int flags, | 29 | extern int create_user_ns(struct cred *new); |
30 | struct user_namespace *old_ns); | ||
31 | extern void free_user_ns(struct kref *kref); | 30 | extern void free_user_ns(struct kref *kref); |
32 | 31 | ||
33 | static inline void put_user_ns(struct user_namespace *ns) | 32 | static inline void put_user_ns(struct user_namespace *ns) |
@@ -43,13 +42,9 @@ static inline struct user_namespace *get_user_ns(struct user_namespace *ns) | |||
43 | return &init_user_ns; | 42 | return &init_user_ns; |
44 | } | 43 | } |
45 | 44 | ||
46 | static inline struct user_namespace *copy_user_ns(int flags, | 45 | static inline int create_user_ns(struct cred *new) |
47 | struct user_namespace *old_ns) | ||
48 | { | 46 | { |
49 | if (flags & CLONE_NEWUSER) | 47 | return -EINVAL; |
50 | return ERR_PTR(-EINVAL); | ||
51 | |||
52 | return old_ns; | ||
53 | } | 48 | } |
54 | 49 | ||
55 | static inline void put_user_ns(struct user_namespace *ns) | 50 | static inline void put_user_ns(struct user_namespace *ns) |