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