Wang Hai
c49a17f1f1
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-17 16:40:36 +02:00
..
2020-05-27 17:46:48 +02:00
2020-05-14 07:58:30 +02:00
2019-09-04 07:42:01 -04:00
2019-07-12 12:24:03 -07:00
2019-05-14 09:47:45 -07:00
2019-07-16 19:23:21 -07:00
2019-10-14 15:04:01 -07:00
2020-03-05 16:43:51 +01:00
2019-07-12 11:05:46 -07:00
2017-12-11 14:54:44 +01:00
2019-08-30 22:43:58 -07:00
2019-07-12 11:05:43 -07:00
2020-01-09 10:19:55 +01:00
2019-09-25 17:51:41 -07:00
2019-06-19 17:09:52 +02:00
2020-01-09 10:20:00 +01:00
2020-06-17 16:40:30 +02:00
2018-12-28 12:11:47 -08:00
2019-09-07 04:28:04 -03:00
2020-06-17 16:40:30 +02:00
2019-11-15 18:34:00 -08:00
2020-04-29 16:33:14 +02:00
2019-06-03 15:39:40 +02:00
2019-10-19 06:32:32 -04:00
2020-01-09 10:19:55 +01:00
2019-06-19 17:09:08 +02:00
2019-09-24 15:54:11 -07:00
2019-09-24 15:54:08 -07:00
2020-06-03 08:21:26 +02:00
2019-06-05 17:37:06 +02:00
2019-10-14 08:56:16 -07:00
2020-04-29 16:33:15 +02:00
2019-07-12 11:05:44 -07:00
2020-01-17 19:48:40 +01:00
2020-03-25 08:25:57 +01:00
2019-09-24 15:54:10 -07:00
2019-10-19 06:32:32 -04:00
2020-05-14 07:58:30 +02:00
2019-09-24 15:54:08 -07:00
2020-03-12 13:00:19 +01:00
2019-10-19 06:32:31 -04:00
2020-01-09 10:19:55 +01:00
2020-04-08 09:08:47 +02:00
2019-03-05 21:07:20 -08:00
2020-01-09 10:19:56 +01:00
2020-02-11 04:35:13 -08:00
2019-09-25 17:51:41 -07:00
2019-09-25 17:51:41 -07:00
2019-05-21 10:50:45 +02:00
2020-02-28 17:22:21 +01:00
2020-02-11 04:35:42 -08:00
2019-11-06 08:47:50 -08:00
2020-03-12 13:00:19 +01:00
2020-06-07 13:18:46 +02:00
2019-09-25 17:51:41 -07:00
2020-03-25 08:25:58 +01:00
2020-01-09 10:19:57 +01:00
2020-05-14 07:58:26 +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
2019-11-15 18:34:00 -08:00
2019-07-12 11:05:43 -07:00
2019-10-19 06:32:31 -04:00
2019-09-24 15:54:08 -07:00
2019-09-24 15:54:08 -07:00
2020-01-23 08:22:41 +01:00
2019-09-07 04:28:04 -03: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
2019-09-04 13:40:49 -07:00
2018-10-09 16:51:11 +02:00
2019-05-30 11:26:32 -07:00
2019-05-21 10:50:45 +02:00
2019-10-19 06:32:32 -04:00
2019-06-05 17:37:17 +02:00
2020-05-20 08:20:03 +02:00
2019-10-07 15:47:19 -07:00
2019-05-14 19:52:48 -07:00
2020-01-23 08:22:39 +01:00
2020-01-23 08:22:40 +01:00
2019-11-06 08:47:50 -08:00
2019-10-07 15:47:20 -07:00
2020-06-17 16:40:36 +02:00
2019-07-18 17:08:07 -07:00
2020-04-01 11:02:03 +02:00
2018-08-22 10:52:44 -07:00
2019-09-24 15:54:08 -07:00
2019-09-25 17:51:41 -07:00
2020-04-01 11:02:02 +02:00
2019-10-19 06:32:33 -04:00
2019-09-17 15:20:17 -07:00
2019-06-19 17:09:53 +02:00
2020-06-17 16:40:23 +02:00
2018-09-13 15:18:04 -10:00
2020-04-29 16:33:14 +02:00
2019-10-07 15:47:19 -07:00
2020-02-28 17:22:20 +01:00
2019-11-06 08:47:50 -08:00
2019-08-13 16:06:52 -07:00
2019-10-07 15:47:19 -07:00
2019-05-21 10:50:45 +02:00
2019-09-24 15:54:12 -07:00
2020-01-09 10:19:56 +01:00
2019-09-24 15:54:12 -07:00