diff options
| author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 05:56:38 +0100 |
|---|---|---|
| committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2012-02-19 05:56:38 +0100 |
| commit | 19796a75ab8ba43b31e230ea169d5383c6392bfc (patch) | |
| tree | 3041c5678e06133dd7fcbf2ebf34b6506334f677 /libdde_linux26/contrib/include/linux/user_namespace.h | |
| parent | 6b2e5e0d91823c2a6ce5a5cb12ae3d00b82adae7 (diff) | |
| parent | 8df772b3c665e663f6f9d2a70f9c691590bd3f91 (diff) | |
Merge branch 'dde' into upstream-merged
Diffstat (limited to 'libdde_linux26/contrib/include/linux/user_namespace.h')
| -rw-r--r-- | libdde_linux26/contrib/include/linux/user_namespace.h | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/libdde_linux26/contrib/include/linux/user_namespace.h b/libdde_linux26/contrib/include/linux/user_namespace.h new file mode 100644 index 00000000..cc4f4536 --- /dev/null +++ b/libdde_linux26/contrib/include/linux/user_namespace.h @@ -0,0 +1,57 @@ +#ifndef _LINUX_USER_NAMESPACE_H +#define _LINUX_USER_NAMESPACE_H + +#include <linux/kref.h> +#include <linux/nsproxy.h> +#include <linux/sched.h> +#include <linux/err.h> + +#define UIDHASH_BITS (CONFIG_BASE_SMALL ? 3 : 8) +#define UIDHASH_SZ (1 << UIDHASH_BITS) + +struct user_namespace { + struct kref kref; + struct hlist_head uidhash_table[UIDHASH_SZ]; + struct user_struct *creator; + struct work_struct destroyer; +}; + +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; +} + +extern int create_user_ns(struct cred *new); +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); +} + +#else + +static inline struct user_namespace *get_user_ns(struct user_namespace *ns) +{ + return &init_user_ns; +} + +static inline int create_user_ns(struct cred *new) +{ + return -EINVAL; +} + +static inline void put_user_ns(struct user_namespace *ns) +{ +} + +#endif + +#endif /* _LINUX_USER_H */ |
