Blame view

include/linux/user_namespace.h 1.46 KB
acce292c8   Cedric Le Goater   user namespace: a...
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   Serge E. Hallyn   user namespace: a...
7
  #include <linux/err.h>
acce292c8   Cedric Le Goater   user namespace: a...
8

6164281ab   Pavel Emelyanov   user_ns: improve ...
9
  #define UIDHASH_BITS	(CONFIG_BASE_SMALL ? 3 : 7)
acce292c8   Cedric Le Goater   user namespace: a...
10
11
12
13
  #define UIDHASH_SZ	(1 << UIDHASH_BITS)
  
  struct user_namespace {
  	struct kref		kref;
735de2230   Pavel Emelyanov   Convert uid hash ...
14
  	struct hlist_head	uidhash_table[UIDHASH_SZ];
18b6e0414   Serge Hallyn   User namespaces: ...
15
  	struct user_struct	*creator;
517083667   David Howells   Fix recursive loc...
16
  	struct work_struct	destroyer;
acce292c8   Cedric Le Goater   user namespace: a...
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   Serge Hallyn   User namespaces: ...
29
  extern int create_user_ns(struct cred *new);
acce292c8   Cedric Le Goater   user namespace: a...
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   Eric W. Biederman   user_ns: Introduc...
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   Cedric Le Goater   user namespace: a...
39
40
41
42
43
44
  #else
  
  static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
  {
  	return &init_user_ns;
  }
18b6e0414   Serge Hallyn   User namespaces: ...
45
  static inline int create_user_ns(struct cred *new)
acce292c8   Cedric Le Goater   user namespace: a...
46
  {
18b6e0414   Serge Hallyn   User namespaces: ...
47
  	return -EINVAL;
acce292c8   Cedric Le Goater   user namespace: a...
48
49
50
51
52
  }
  
  static inline void put_user_ns(struct user_namespace *ns)
  {
  }
5c1469de7   Eric W. Biederman   user_ns: Introduc...
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   Cedric Le Goater   user namespace: a...
63
64
65
  #endif
  
  #endif /* _LINUX_USER_H */