On spreading atomic_t initialization
From: Alexey Dobriyan <hidden>
Date: 2008-10-28 15:26:34
Also in:
lkml
From: Alexey Dobriyan <hidden>
Date: 2008-10-28 15:26:34
Also in:
lkml
I wrote stupid runtime checker to look for atomic_t uninitialized usage and the amount of screaming in logs is surprisingly very big. So the question: is there really really an arch for which setting atomic_t by hand (kzalloc) is not equivalent to atomic_set()? Given the following patch, there is none almost certainly.
--- a/kernel/user.c
+++ b/kernel/user.c@@ -405,6 +405,9 @@ struct user_struct *alloc_uid(struct user_namespace *ns, uid_t uid) new->uid = uid; atomic_set(&new->__count, 1); + atomic_set(&new->processes, 0); + atomic_set(&new->files, 0); + atomic_set(&new->sigpending, 0); if (sched_create_user(new) < 0) goto out_free_user;
Such checker will still be useful to catch genuine uninitialized usages, but the amount of stuff to shut up before it can realistically be put in -mm is amazing.