Wang Hai
248bd0506b
mm/slub: fix a memory leak in sysfs_slab_add()
...
commit dde3c6b72a16c2db826f54b2d49bdea26c3534a2 upstream.
syzkaller reports for memory leak when kobject_init_and_add() returns an
error in the function sysfs_slab_add() [1]
When this happened, the function kobject_put() is not called for the
corresponding kobject, which potentially leads to memory leak.
This patch fixes the issue by calling kobject_put() even if
kobject_init_and_add() fails.
[1]
BUG: memory leak
unreferenced object 0xffff8880a6d4be88 (size 8):
comm "syz-executor.3", pid 946, jiffies 4295772514 (age 18.396s)
hex dump (first 8 bytes):
70 69 64 5f 33 00 ff ff pid_3...
backtrace:
kstrdup+0x35/0x70 mm/util.c:60
kstrdup_const+0x3d/0x50 mm/util.c:82
kvasprintf_const+0x112/0x170 lib/kasprintf.c:48
kobject_set_name_vargs+0x55/0x130 lib/kobject.c:289
kobject_add_varg lib/kobject.c:384 [inline]
kobject_init_and_add+0xd8/0x170 lib/kobject.c:473
sysfs_slab_add+0x1d8/0x290 mm/slub.c:5811
__kmem_cache_create+0x50a/0x570 mm/slub.c:4384
create_cache+0x113/0x1e0 mm/slab_common.c:407
kmem_cache_create_usercopy+0x1a1/0x260 mm/slab_common.c:505
kmem_cache_create+0xd/0x10 mm/slab_common.c:564
create_pid_cachep kernel/pid_namespace.c:54 [inline]
create_pid_namespace kernel/pid_namespace.c:96 [inline]
copy_pid_ns+0x77c/0x8f0 kernel/pid_namespace.c:148
create_new_namespaces+0x26b/0xa30 kernel/nsproxy.c:95
unshare_nsproxy_namespaces+0xa7/0x1e0 kernel/nsproxy.c:229
ksys_unshare+0x3d2/0x770 kernel/fork.c:2969
__do_sys_unshare kernel/fork.c:3037 [inline]
__se_sys_unshare kernel/fork.c:3035 [inline]
__x64_sys_unshare+0x2d/0x40 kernel/fork.c:3035
do_syscall_64+0xa1/0x530 arch/x86/entry/common.c:295
Fixes: 80da026a8e5d ("mm/slub: fix slab double-free in case of duplicate sysfs filename")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Wang Hai <wanghai38@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <cl@linux.com>
Cc: Pekka Enberg <penberg@kernel.org>
Cc: David Rientjes <rientjes@google.com>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Link: http://lkml.kernel.org/r/20200602115033.1054-1-wanghai38@huawei.com
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2020-06-20 10:24:12 +02:00
..
2019-05-08 07:19:07 +02:00
2019-05-21 18:49:01 +02:00
2016-07-26 16:19:19 -07:00
2016-10-11 15:06:33 -07:00
2016-01-27 09:09:57 -05:00
2019-06-22 08:17:12 +02:00
2019-08-06 18:29:37 +02:00
2017-01-12 11:39:32 +01:00
2016-03-17 15:09:34 -07:00
2018-09-19 22:47:17 +02:00
2016-03-17 15:09:34 -07:00
2018-02-25 11:05:49 +01:00
2018-09-15 09:42:57 +02:00
2016-03-15 16:55:16 -07:00
2019-11-12 19:16:10 +01:00
2018-11-10 07:42:52 -08:00
2016-07-26 16:19:19 -07:00
2019-06-11 12:22:45 +02:00
2016-05-19 19:12:14 -07:00
2020-03-11 07:53:08 +01:00
2019-11-25 09:51:58 +01:00
2019-06-22 08:17:12 +02:00
2017-01-06 10:40:13 +01:00
2019-12-05 15:35:02 +01:00
2018-05-22 16:57:57 +02:00
2016-09-13 02:35:27 +02:00
2019-08-06 18:29:41 +02:00
2016-03-17 15:09:34 -07:00
2016-03-17 15:09:34 -07:00
2019-08-04 09:33:41 +02:00
2019-11-28 18:28:09 +01:00
2019-06-22 08:17:18 +02:00
2016-05-22 17:21:27 -07:00
2018-10-10 08:53:20 +02:00
2016-10-12 10:23:41 -07:00
2017-08-30 10:21:47 +02:00
2020-04-02 17:20:26 +02:00
2019-11-28 18:28:51 +01:00
2019-03-23 13:19:49 +01:00
2019-02-20 10:18:34 +01:00
2020-04-13 10:32:54 +02:00
2016-07-28 16:07:41 -07:00
2019-03-13 14:04:54 -07:00
2019-05-21 18:48:58 +02:00
2019-07-10 09:55:43 +02:00
2016-03-17 15:09:34 -07:00
2020-01-12 11:24:15 +01:00
2016-04-28 11:44:19 +02:00
2019-08-04 09:33:42 +02:00
2016-05-19 19:12:14 -07:00
2018-08-15 18:14:45 +02:00
2020-06-11 09:22:20 +02:00
2015-11-05 19:34:48 -08:00
2017-08-24 17:12:19 -07:00
2020-04-02 17:20:26 +02:00
2019-02-12 19:45:02 +01:00
2020-05-20 08:15:28 +02:00
2015-11-05 19:34:48 -08:00
2019-04-05 22:29:06 +02:00
2019-07-10 09:55:38 +02:00
2016-10-07 18:46:29 -07:00
2016-10-07 18:46:29 -07:00
2016-10-07 18:46:27 -07:00
2016-06-03 15:06:22 -07:00
2020-01-23 08:19:40 +01:00
2017-11-24 08:33:42 +01:00
2016-03-17 15:09:34 -07:00
2019-04-27 09:34:47 +02:00
2016-03-17 15:09:34 -07:00
2016-10-18 14:13:37 -07:00
2016-03-17 15:09:34 -07:00
2016-08-26 17:39:35 -07:00
2018-11-21 09:26:03 +01:00
2020-05-20 08:15:33 +02:00
2018-12-01 09:44:19 +01:00
2019-06-22 08:17:13 +02:00
2017-03-22 12:43:38 +01:00
2017-03-22 12:43:38 +01:00
2020-06-20 10:24:12 +02:00
2016-08-02 17:31:41 -04:00
2017-10-21 17:21:36 +02:00
2017-07-05 14:40:17 +02:00
2016-10-07 18:46:28 -07:00
2016-10-07 18:46:28 -07:00
2018-08-15 18:14:45 +02:00
2018-12-08 13:05:09 +01:00
2019-10-17 13:42:06 -07:00
2016-04-04 10:41:08 -07:00
2019-01-16 22:12:32 +01:00
2018-09-19 22:47:17 +02:00
2020-06-03 08:16:47 +02:00
2017-03-12 06:41:43 +01:00
2018-09-19 22:47:12 +02:00
2019-11-12 19:15:43 +01:00
2017-04-08 09:30:36 +02:00
2016-06-03 16:02:55 -07:00
2016-01-15 11:40:52 -08:00
2015-11-06 17:50:42 -08:00
2020-01-12 11:24:13 +01:00
2018-09-05 09:20:02 +02:00