Wang Hai
12c409ce4c
mm/slub: fix a memory leak in sysfs_slab_add()
commit dde3c6b72a 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: 80da026a8e ("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-17 16:42:06 +02:00
..
2020-05-27 17:48:26 +02:00
2020-05-14 07:59:28 +02:00
2019-09-04 07:42:01 -04:00
2019-07-12 12:24:03 -07:00
2019-12-01 12:59:09 -08:00
2019-12-01 12:59:09 -08:00
2019-10-14 15:04:01 -07:00
2020-01-31 10:30:39 -08:00
2019-07-12 11:05:46 -07:00
2020-01-31 10:30:38 -08:00
2019-08-30 22:43:58 -07:00
2019-07-12 11:05:43 -07:00
2020-01-31 10:30:37 -08:00
2019-09-25 17:51:41 -07:00
2019-06-19 17:09:52 +02:00
2020-01-31 10:30:38 -08:00
2020-06-17 16:42:00 +02:00
2019-12-10 10:12:55 +01:00
2020-02-04 03:05:25 +00:00
2020-06-17 16:42:00 +02:00
2020-03-29 09:47:05 -07:00
2020-04-29 16:34:46 +02:00
2019-12-01 12:59:09 -08:00
2019-10-19 06:32:32 -04:00
2019-12-01 12:59:06 -08:00
2019-06-19 17:09:08 +02:00
2019-12-01 12:59:10 -08:00
2020-02-04 03:05:25 +00:00
2020-06-03 08:23:25 +02:00
2019-06-05 17:37:06 +02:00
2020-01-31 10:30:36 -08:00
2020-04-29 16:34:46 +02:00
2019-07-12 11:05:44 -07:00
2019-11-02 12:39:12 -07:00
2020-04-29 16:34:16 +02:00
2020-02-04 03:05:25 +00:00
2019-11-06 13:03:36 +01:00
2020-01-31 10:30:38 -08:00
2020-05-14 07:59:27 +02:00
2019-09-24 15:54:08 -07:00
2020-03-06 07:06:09 -06:00
2019-12-01 12:59:04 -08:00
2020-03-06 07:06:09 -06:00
2020-04-08 09:11:09 +02:00
2019-03-05 21:07:20 -08:00
2020-02-04 03:05:23 +00:00
2020-02-04 03:05:25 +00:00
2020-02-04 03:05:25 +00:00
2019-09-25 17:51:41 -07:00
2019-05-21 10:50:45 +02:00
2020-02-20 10:03:14 +00:00
2020-02-04 03:05:26 +00:00
2020-03-21 18:56:06 -07:00
2020-03-06 07:06:09 -06:00
2020-06-07 13:16:48 +02:00
2019-09-25 17:51:41 -07:00
2020-03-21 18:56:06 -07:00
2020-01-31 10:30:38 -08:00
2020-05-14 07:59:24 +02:00
2018-06-07 17:34:36 -07:00
2019-10-14 15:04:00 -07:00
2019-06-29 16:43:45 +08:00
2020-02-03 08:05:37 -05:00
2020-01-31 10:30:39 -08:00
2019-10-19 06:32:31 -04:00
2019-09-24 15:54:08 -07:00
2020-01-31 10:30:38 -08:00
2020-01-13 18:19:02 -08:00
2020-02-04 03:05:25 +00:00
2019-03-13 12:25:31 -07:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:16 +02:00
2019-06-05 17:37:16 +02:00
2020-01-20 16:40:56 +01:00
2019-12-01 06:29:19 -08:00
2020-01-31 10:30:38 -08:00
2020-06-17 16:41:53 +02:00
2019-05-21 10:50:45 +02:00
2019-12-01 12:59:09 -08:00
2019-06-05 17:37:17 +02:00
2020-05-20 08:21:55 +02:00
2019-10-07 15:47:19 -07:00
2019-05-14 19:52:48 -07:00
2020-06-17 16:41:53 +02:00
2020-01-13 18:19:02 -08:00
2019-12-01 12:59:06 -08:00
2019-10-07 15:47:20 -07:00
2020-06-17 16:42:06 +02:00
2019-07-18 17:08:07 -07:00
2020-03-29 09:47:06 -07:00
2018-08-22 10:52:44 -07:00
2019-09-24 15:54:08 -07:00
2020-01-31 10:30:37 -08:00
2020-03-29 09:47:05 -07:00
2019-10-19 06:32:33 -04:00
2019-09-17 15:20:17 -07:00
2019-12-01 12:59:10 -08:00
2020-06-17 16:41:50 +02:00
2018-09-13 15:18:04 -10:00
2020-04-29 16:34:45 +02:00
2019-10-07 15:47:19 -07:00
2020-02-21 11:22:15 -08:00
2019-12-04 19:44:11 -08:00
2019-12-01 12:59:07 -08:00
2020-05-27 17:48:27 +02:00
2019-05-21 10:50:45 +02:00
2019-09-24 15:54:12 -07:00
2020-01-04 13:55:09 -08:00
2020-01-31 10:30:39 -08:00