Blame view
include/linux/user_namespace.h
1.46 KB
acce292c8
|
1 2 3 4 5 6 |
#ifndef _LINUX_USER_NAMESPACE_H #define _LINUX_USER_NAMESPACE_H #include <linux/kref.h> #include <linux/nsproxy.h> #include <linux/sched.h> |
77ec739d8
|
7 |
#include <linux/err.h> |
acce292c8
|
8 9 10 11 12 13 |
#define UIDHASH_BITS (CONFIG_BASE_SMALL ? 3 : 8) #define UIDHASH_SZ (1 << UIDHASH_BITS) struct user_namespace { struct kref kref; |
735de2230
|
14 |
struct hlist_head uidhash_table[UIDHASH_SZ]; |
18b6e0414
|
15 |
struct user_struct *creator; |
517083667
|
16 |
struct work_struct destroyer; |
acce292c8
|
17 18 19 20 21 22 23 24 25 26 27 28 |
}; extern struct user_namespace init_user_ns; #ifdef CONFIG_USER_NS static inline struct user_namespace *get_user_ns(struct user_namespace *ns) { if (ns) kref_get(&ns->kref); return ns; } |
18b6e0414
|
29 |
extern int create_user_ns(struct cred *new); |
acce292c8
|
30 31 32 33 34 35 36 |
extern void free_user_ns(struct kref *kref); static inline void put_user_ns(struct user_namespace *ns) { if (ns) kref_put(&ns->kref, free_user_ns); } |
5c1469de7
|
37 38 |
uid_t user_ns_map_uid(struct user_namespace *to, const struct cred *cred, uid_t uid); gid_t user_ns_map_gid(struct user_namespace *to, const struct cred *cred, gid_t gid); |
acce292c8
|
39 40 41 42 43 44 |
#else static inline struct user_namespace *get_user_ns(struct user_namespace *ns) { return &init_user_ns; } |
18b6e0414
|
45 |
static inline int create_user_ns(struct cred *new) |
acce292c8
|
46 |
{ |
18b6e0414
|
47 |
return -EINVAL; |
acce292c8
|
48 49 50 51 52 |
} static inline void put_user_ns(struct user_namespace *ns) { } |
5c1469de7
|
53 54 55 56 57 58 59 60 61 62 |
static inline uid_t user_ns_map_uid(struct user_namespace *to, const struct cred *cred, uid_t uid) { return uid; } static inline gid_t user_ns_map_gid(struct user_namespace *to, const struct cred *cred, gid_t gid) { return gid; } |
acce292c8
|
63 64 65 |
#endif #endif /* _LINUX_USER_H */ |