userns: Disassociate user_struct from the user_namespace.
Modify alloc_uid to take a kuid and make the user hash table global. Stop holding a reference to the user namespace in struct user_struct. This simplifies the code and makes the per user accounting not care about which user namespace a uid happens to appear in. Acked-by: Serge Hallyn <serge.hallyn@canonical.com> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
This commit is contained in:
parent
5673a94c14
commit
7b44ab978b
6 changed files with 55 additions and 43 deletions
|
|
@ -90,6 +90,7 @@ struct sched_param {
|
|||
#include <linux/latencytop.h>
|
||||
#include <linux/cred.h>
|
||||
#include <linux/llist.h>
|
||||
#include <linux/uidgid.h>
|
||||
|
||||
#include <asm/processor.h>
|
||||
|
||||
|
|
@ -728,8 +729,7 @@ struct user_struct {
|
|||
|
||||
/* Hash table maintenance information */
|
||||
struct hlist_node uidhash_node;
|
||||
uid_t uid;
|
||||
struct user_namespace *_user_ns; /* Don't use will be removed soon */
|
||||
kuid_t uid;
|
||||
|
||||
#ifdef CONFIG_PERF_EVENTS
|
||||
atomic_long_t locked_vm;
|
||||
|
|
@ -738,7 +738,7 @@ struct user_struct {
|
|||
|
||||
extern int uids_sysfs_init(void);
|
||||
|
||||
extern struct user_struct *find_user(uid_t);
|
||||
extern struct user_struct *find_user(kuid_t);
|
||||
|
||||
extern struct user_struct root_user;
|
||||
#define INIT_USER (&root_user)
|
||||
|
|
@ -2177,7 +2177,7 @@ extern struct task_struct *find_task_by_pid_ns(pid_t nr,
|
|||
extern void __set_special_pids(struct pid *pid);
|
||||
|
||||
/* per-UID process charging. */
|
||||
extern struct user_struct * alloc_uid(struct user_namespace *, uid_t);
|
||||
extern struct user_struct * alloc_uid(kuid_t);
|
||||
static inline struct user_struct *get_uid(struct user_struct *u)
|
||||
{
|
||||
atomic_inc(&u->__count);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue