Julian Anastasov
0d450977ae
ipvs: defer hook registration to avoid leaks
[ Upstream commit cf47a0b882 ]
syzkaller reports for memory leak when registering hooks [1]
As we moved the nf_unregister_net_hooks() call into
__ip_vs_dev_cleanup(), defer the nf_register_net_hooks()
call, so that hooks are allocated and freed from same
pernet_operations (ipvs_core_dev_ops).
[1]
BUG: memory leak
unreferenced object 0xffff88810acd8a80 (size 96):
comm "syz-executor073", pid 7254, jiffies 4294950560 (age 22.250s)
hex dump (first 32 bytes):
02 00 00 00 00 00 00 00 50 8b bb 82 ff ff ff ff ........P.......
00 00 00 00 00 00 00 00 00 77 bb 82 ff ff ff ff .........w......
backtrace:
[<0000000013db61f1>] kmemleak_alloc_recursive include/linux/kmemleak.h:55 [inline]
[<0000000013db61f1>] slab_post_alloc_hook mm/slab.h:439 [inline]
[<0000000013db61f1>] slab_alloc_node mm/slab.c:3269 [inline]
[<0000000013db61f1>] kmem_cache_alloc_node_trace+0x15b/0x2a0 mm/slab.c:3597
[<000000001a27307d>] __do_kmalloc_node mm/slab.c:3619 [inline]
[<000000001a27307d>] __kmalloc_node+0x38/0x50 mm/slab.c:3627
[<0000000025054add>] kmalloc_node include/linux/slab.h:590 [inline]
[<0000000025054add>] kvmalloc_node+0x4a/0xd0 mm/util.c:431
[<0000000050d1bc00>] kvmalloc include/linux/mm.h:637 [inline]
[<0000000050d1bc00>] kvzalloc include/linux/mm.h:645 [inline]
[<0000000050d1bc00>] allocate_hook_entries_size+0x3b/0x60 net/netfilter/core.c:61
[<00000000e8abe142>] nf_hook_entries_grow+0xae/0x270 net/netfilter/core.c:128
[<000000004b94797c>] __nf_register_net_hook+0x9a/0x170 net/netfilter/core.c:337
[<00000000d1545cbc>] nf_register_net_hook+0x34/0xc0 net/netfilter/core.c:464
[<00000000876c9b55>] nf_register_net_hooks+0x53/0xc0 net/netfilter/core.c:480
[<000000002ea868e0>] __ip_vs_init+0xe8/0x170 net/netfilter/ipvs/ip_vs_core.c:2280
[<000000002eb2d451>] ops_init+0x4c/0x140 net/core/net_namespace.c:130
[<000000000284ec48>] setup_net+0xde/0x230 net/core/net_namespace.c:316
[<00000000a70600fa>] copy_net_ns+0xf0/0x1e0 net/core/net_namespace.c:439
[<00000000ff26c15e>] create_new_namespaces+0x141/0x2a0 kernel/nsproxy.c:107
[<00000000b103dc79>] copy_namespaces+0xa1/0xe0 kernel/nsproxy.c:165
[<000000007cc008a2>] copy_process.part.0+0x11fd/0x2150 kernel/fork.c:2035
[<00000000c344af7c>] copy_process kernel/fork.c:1800 [inline]
[<00000000c344af7c>] _do_fork+0x121/0x4f0 kernel/fork.c:2369
Reported-by: syzbot+722da59ccb264bc19910@syzkaller.appspotmail.com
Fixes: 719c7d563c ("ipvs: Fix use-after-free in ip_vs_in")
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Acked-by: Simon Horman <horms@verge.net.au>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2019-07-31 07:28:27 +02:00
..
2019-07-03 13:15:59 +02:00
2019-05-16 19:42:34 +02:00
2019-04-20 09:15:07 +02:00
2019-04-27 09:35:33 +02:00
2019-06-22 08:16:14 +02:00
2019-07-31 07:28:19 +02:00
2019-07-10 09:54:31 +02:00
2019-05-16 19:42:33 +02:00
2019-05-08 07:20:45 +02:00
2019-07-21 09:04:22 +02:00
2019-03-27 14:13:51 +09:00
2019-07-21 09:04:18 +02:00
2019-04-03 06:25:08 +02:00
2019-05-16 19:42:34 +02:00
2019-04-27 09:35:40 +02:00
2019-07-03 13:16:02 +02:00
2019-07-21 09:04:21 +02:00
2019-04-17 08:37:45 +02:00
2019-07-31 07:28:21 +02:00
2019-06-22 08:16:14 +02:00
2019-06-09 09:18:10 +02:00
2019-07-21 09:04:25 +02:00
2019-07-31 07:28:27 +02:00
2019-04-03 06:25:08 +02:00
2019-05-16 19:42:32 +02:00
2019-06-22 08:16:15 +02:00
2019-07-03 13:16:01 +02:00
2019-03-23 14:35:16 +01:00
2019-06-11 12:21:45 +02:00
2019-05-02 09:40:34 +02:00
2019-05-08 07:20:44 +02:00
2019-05-16 19:42:30 +02:00
2019-07-03 13:16:02 +02:00
2019-07-21 09:04:29 +02:00
2019-07-03 13:16:03 +02:00
2019-03-19 13:13:24 +01:00
2019-05-25 18:25:17 +02:00
2019-06-25 11:36:54 +08:00
2019-03-19 13:13:23 +01:00
2019-07-31 07:28:27 +02:00