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: [<ffffffff818e2c43>] kmemleak_alloc+0x23/0x40 [<ffffffff81177f31>] kmem_cache_alloc_trace+0xe1/0x180 [<ffffffff812d42af>] selinux_msg_queue_alloc_security+0x3f/0xd0 [<ffffffff812cc6be>] security_msg_queue_alloc+0x2e/0x40 [<ffffffff812b94ee>] newque+0x4e/0x150 [<ffffffff812b8cb9>] ipcget+0x159/0x1b0 [<ffffffff812b98d9>] SyS_msgget+0x39/0x40 [<ffffffff818e7bdb>] entry_SYSCALL_64_fastpath+0x13/0x8f [<ffffffffffffffff>] 0xffffffffffffffff ipc_rcu_free() was given to ipc_rcu_putref() instead of msg_rcu_free() which does security cleaning. Signed-off-by: Fabian Frederick <f...@skynet.be> --- ipc/msg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ipc/msg.c b/ipc/msg.c index 59559a2..43e9631 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -681,7 +681,7 @@ long do_msgsnd(int msqid, long mtype, void __user *mtext, rcu_read_lock(); ipc_lock_object(&msq->q_perm); - ipc_rcu_putref(msq, ipc_rcu_free); + ipc_rcu_putref(msq, msg_rcu_free); /* raced with RMID? */ if (!ipc_valid_object(&msq->q_perm)) { err = -EIDRM; -- 2.8.1