diff options
author | Kees Cook <keescook@chromium.org> | 2017-07-12 23:35:22 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-07-13 01:26:02 +0200 |
commit | 3d3653f9732c73feb8c4addfc1cbdaa292a399fa (patch) | |
tree | 325411c382f3be2925f8718591c503d41fea7943 /ipc/util.c | |
parent | ipc/msg.c: avoid ipc_rcu_putref for failed ipc_addid() (diff) | |
download | linux-3d3653f9732c73feb8c4addfc1cbdaa292a399fa.tar.xz linux-3d3653f9732c73feb8c4addfc1cbdaa292a399fa.zip |
ipc: move atomic_set() to where it is needed
Only after ipc_addid() has succeeded will refcounting be used, so move
initialization into ipc_addid() and remove from open-coded *_alloc()
routines.
Link: http://lkml.kernel.org/r/20170525185107.12869-17-manfred@colorfullife.com
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Manfred Spraul <manfred@colorfullife.com>
Cc: Davidlohr Bueso <dave@stgolabs.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'ipc/util.c')
-rw-r--r-- | ipc/util.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/ipc/util.c b/ipc/util.c index 2428dd44ca97..1a2cb02467ab 100644 --- a/ipc/util.c +++ b/ipc/util.c @@ -232,6 +232,7 @@ int ipc_addid(struct ipc_ids *ids, struct kern_ipc_perm *new, int size) idr_preload(GFP_KERNEL); + atomic_set(&new->refcount, 1); spin_lock_init(&new->lock); new->deleted = false; rcu_read_lock(); |