Commit 354a1f4d authored by Andrew Morton's avatar Andrew Morton Committed by Linus Torvalds

alloc_uid: cleanup

Use kmem_cache_zalloc(), remove large amounts of initialisation code and
ifdeffery.

Note: this assumes that memset(*atomic_t, 0) correctly initialises the
atomic_t.  This is true for all present archtiectures and if it becomes false
for a future architecture then we'll need to make large changes all over the
place anyway.
Acked-by: default avatarDavid Howells <dhowells@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 487798df
...@@ -384,7 +384,7 @@ void free_uid(struct user_struct *up) ...@@ -384,7 +384,7 @@ void free_uid(struct user_struct *up)
local_irq_restore(flags); local_irq_restore(flags);
} }
struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid) struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid)
{ {
struct hlist_head *hashent = uidhashentry(ns, uid); struct hlist_head *hashent = uidhashentry(ns, uid);
struct user_struct *up, *new; struct user_struct *up, *new;
...@@ -399,26 +399,12 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid) ...@@ -399,26 +399,12 @@ struct user_struct * alloc_uid(struct user_namespace *ns, uid_t uid)
spin_unlock_irq(&uidhash_lock); spin_unlock_irq(&uidhash_lock);
if (!up) { if (!up) {
new = kmem_cache_alloc(uid_cachep, GFP_KERNEL); new = kmem_cache_zalloc(uid_cachep, GFP_KERNEL);
if (!new) if (!new)
goto out_unlock; goto out_unlock;
new->uid = uid; new->uid = uid;
atomic_set(&new->__count, 1); atomic_set(&new->__count, 1);
atomic_set(&new->processes, 0);
atomic_set(&new->files, 0);
atomic_set(&new->sigpending, 0);
#ifdef CONFIG_INOTIFY_USER
atomic_set(&new->inotify_watches, 0);
atomic_set(&new->inotify_devs, 0);
#endif
#ifdef CONFIG_POSIX_MQUEUE
new->mq_bytes = 0;
#endif
new->locked_shm = 0;
#ifdef CONFIG_KEYS
new->uid_keyring = new->session_keyring = NULL;
#endif
if (sched_create_user(new) < 0) if (sched_create_user(new) < 0)
goto out_free_user; goto out_free_user;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment