mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-22 14:41:27 +00:00
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
|
@ -27,7 +27,6 @@ int create_user_ns(struct cred *new)
|
|||
{
|
||||
struct user_namespace *ns, *parent_ns = new->user_ns;
|
||||
struct user_struct *root_user;
|
||||
int n;
|
||||
|
||||
ns = kmem_cache_alloc(user_ns_cachep, GFP_KERNEL);
|
||||
if (!ns)
|
||||
|
@ -35,11 +34,8 @@ int create_user_ns(struct cred *new)
|
|||
|
||||
kref_init(&ns->kref);
|
||||
|
||||
for (n = 0; n < UIDHASH_SZ; ++n)
|
||||
INIT_HLIST_HEAD(ns->uidhash_table + n);
|
||||
|
||||
/* Alloc new root user. */
|
||||
root_user = alloc_uid(ns, 0);
|
||||
root_user = alloc_uid(make_kuid(ns, 0));
|
||||
if (!root_user) {
|
||||
kmem_cache_free(user_ns_cachep, ns);
|
||||
return -ENOMEM;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue