mirror of
https://github.com/adulau/aha.git
synced 2024-12-28 03:36:19 +00:00
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: David Howells <dhowells@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
487798df6d
commit
354a1f4d99
1 changed files with 2 additions and 16 deletions
|
@ -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)
|
||||||
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;
|
||||||
|
|
Loading…
Reference in a new issue