Fabian Frederick
9b24fef9f0
sysv, ipc: fix security-layer leaking
Commit 53dad6d3a8 ("ipc: fix race with LSMs") updated ipc_rcu_putref()
to receive rcu freeing function but used generic ipc_rcu_free() instead
of msg_rcu_free() which does security cleaning.
Running LTP msgsnd06 with kmemleak gives the following:
cat /sys/kernel/debug/kmemleak
unreferenced object 0xffff88003c0a11f8 (size 8):
comm "msgsnd06", pid 1645, jiffies 4294672526 (age 6.549s)
hex dump (first 8 bytes):
1b 00 00 00 01 00 00 00 ........
backtrace:
kmemleak_alloc+0x23/0x40
kmem_cache_alloc_trace+0xe1/0x180
selinux_msg_queue_alloc_security+0x3f/0xd0
security_msg_queue_alloc+0x2e/0x40
newque+0x4e/0x150
ipcget+0x159/0x1b0
SyS_msgget+0x39/0x40
entry_SYSCALL_64_fastpath+0x13/0x8f
Manfred Spraul suggested to fix sem.c as well and Davidlohr Bueso to
only use ipc_rcu_free in case of security allocation failure in newary()
Fixes: 53dad6d3a8 ("ipc: fix race with LSMs")
Link: http://lkml.kernel.org/r/1470083552-22966-1-git-send-email-fabf@skynet.be
Signed-off-by: Fabian Frederick <fabf@skynet.be>
Cc: Davidlohr Bueso <dbueso@suse.de>
Cc: Manfred Spraul <manfred@colorfullife.com>
Cc: <stable@vger.kernel.org> [3.12+]
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
2016-08-02 17:31:41 -04:00 |
| .. |
|
compat.c
|
ipc: resolve shadow warnings
|
2014-10-14 02:18:23 +02:00 |
|
compat_mq.c
|
|
|
|
ipc_sysctl.c
|
ipc/msg: increase MSGMNI, remove scaling
|
2014-12-13 12:42:52 -08:00 |
|
Makefile
|
ipc/msg: increase MSGMNI, remove scaling
|
2014-12-13 12:42:52 -08:00 |
|
mq_sysctl.c
|
|
|
|
mqueue.c
|
vfs: Generalize filesystem nodev handling.
|
2016-06-23 15:41:57 -05:00 |
|
msg.c
|
sysv, ipc: fix security-layer leaking
|
2016-08-02 17:31:41 -04:00 |
|
msgutil.c
|
ipc,msg: drop dst nil validation in copy_msg
|
2015-11-06 17:50:42 -08:00 |
|
namespace.c
|
ipc: Initialize ipc_namespace->user_ns early.
|
2016-06-23 15:41:53 -05:00 |
|
sem.c
|
sysv, ipc: fix security-layer leaking
|
2016-08-02 17:31:41 -04:00 |
|
shm.c
|
shmem: make shmem_inode_info::lock irq-safe
|
2016-07-26 16:19:19 -07:00 |
|
syscall.c
|
|
|
|
util.c
|
tree wide: use kvfree() than conditional kfree()/vfree()
|
2016-01-22 17:02:18 -08:00 |
|
util.h
|
tree wide: use kvfree() than conditional kfree()/vfree()
|
2016-01-22 17:02:18 -08:00 |