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 UID_GID_MAP_MAX_EXTENTS 5
  10
  11struct uid_gid_map {    /* 64 bytes -- 1 cache line */
  12        u32 nr_extents;
  13        struct uid_gid_extent {
  14                u32 first;
  15                u32 lower_first;
  16                u32 count;
  17        } extent[UID_GID_MAP_MAX_EXTENTS];
  18};
  19
  20struct user_namespace {
  21        struct uid_gid_map      uid_map;
  22        struct uid_gid_map      gid_map;
  23        struct kref             kref;
  24        struct user_namespace   *parent;
  25        kuid_t                  owner;
  26        kgid_t                  group;
  27};
  28
  29extern struct user_namespace init_user_ns;
  30
  31#ifdef CONFIG_USER_NS
  32
  33static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
  34{
  35        if (ns)
  36                kref_get(&ns->kref);
  37        return ns;
  38}
  39
  40extern int create_user_ns(struct cred *new);
  41extern void free_user_ns(struct kref *kref);
  42
  43static inline void put_user_ns(struct user_namespace *ns)
  44{
  45        if (ns)
  46                kref_put(&ns->kref, free_user_ns);
  47}
  48
  49struct seq_operations;
  50extern struct seq_operations proc_uid_seq_operations;
  51extern struct seq_operations proc_gid_seq_operations;
  52extern ssize_t proc_uid_map_write(struct file *, const char __user *, size_t, loff_t *);
  53extern ssize_t proc_gid_map_write(struct file *, const char __user *, size_t, loff_t *);
  54#else
  55
  56static inline struct user_namespace *get_user_ns(struct user_namespace *ns)
  57{
  58        return &init_user_ns;
  59}
  60
  61static inline int create_user_ns(struct cred *new)
  62{
  63        return -EINVAL;
  64}
  65
  66static inline void put_user_ns(struct user_namespace *ns)
  67{
  68}
  69
  70#endif
  71
  72#endif /* _LINUX_USER_H */
  73