Eric Dumazet
a84d016479
mld: fix memory leak in mld_del_delrec()
Similar to the fix done for IPv4 in commit e5b1c6c627
("igmp: fix memory leak in igmpv3_del_delrec()"), we need to
make sure mca_tomb and mca_sources are not blindly overwritten.
Using swap() then a call to ip6_mc_clear_src() will take care
of the missing free.
BUG: memory leak
unreferenced object 0xffff888117d9db00 (size 64):
comm "syz-executor247", pid 6918, jiffies 4294943989 (age 25.350s)
hex dump (first 32 bytes):
00 00 00 00 00 00 00 00 fe 88 00 00 00 00 00 00 ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
backtrace:
[<000000005b463030>] kmemleak_alloc_recursive include/linux/kmemleak.h:43 [inline]
[<000000005b463030>] slab_post_alloc_hook mm/slab.h:522 [inline]
[<000000005b463030>] slab_alloc mm/slab.c:3319 [inline]
[<000000005b463030>] kmem_cache_alloc_trace+0x145/0x2c0 mm/slab.c:3548
[<00000000939cbf94>] kmalloc include/linux/slab.h:552 [inline]
[<00000000939cbf94>] kzalloc include/linux/slab.h:748 [inline]
[<00000000939cbf94>] ip6_mc_add1_src net/ipv6/mcast.c:2236 [inline]
[<00000000939cbf94>] ip6_mc_add_src+0x31f/0x420 net/ipv6/mcast.c:2356
[<00000000d8972221>] ip6_mc_source+0x4a8/0x600 net/ipv6/mcast.c:449
[<000000002b203d0d>] do_ipv6_setsockopt.isra.0+0x1b92/0x1dd0 net/ipv6/ipv6_sockglue.c:748
[<000000001f1e2d54>] ipv6_setsockopt+0x89/0xd0 net/ipv6/ipv6_sockglue.c:944
[<00000000c8f7bdf9>] udpv6_setsockopt+0x4e/0x90 net/ipv6/udp.c:1558
[<000000005a9a0c5e>] sock_common_setsockopt+0x38/0x50 net/core/sock.c:3139
[<00000000910b37b2>] __sys_setsockopt+0x10f/0x220 net/socket.c:2084
[<00000000e9108023>] __do_sys_setsockopt net/socket.c:2100 [inline]
[<00000000e9108023>] __se_sys_setsockopt net/socket.c:2097 [inline]
[<00000000e9108023>] __x64_sys_setsockopt+0x26/0x30 net/socket.c:2097
[<00000000f4818160>] do_syscall_64+0x76/0x1a0 arch/x86/entry/common.c:296
[<000000008d367e8f>] entry_SYSCALL_64_after_hwframe+0x44/0xa9
Fixes: 1666d49e1d ("mld: do not remove mld souce list info when set link down")
Fixes: 9c8bb163ae ("igmp, mld: Fix memory leak in igmpv3/mld_del_delrec()")
Signed-off-by: Eric Dumazet <[email protected]>
Reported-by: syzbot <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
|
2019-08-28 14:47:35 -07:00 |
| .. |
|
ila
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
netfilter
|
inet: frags: re-introduce skb coalescing for local delivery
|
2019-08-08 15:55:10 -07:00 |
|
addrconf.c
|
ipv6: propagate ipv6_add_dev's error returns out of ipv6_find_idev
|
2019-08-23 14:53:06 -07:00 |
|
addrconf_core.c
|
ipv6: Add delete route hook to stubs
|
2019-05-22 17:48:43 -07:00 |
|
addrlabel.c
|
netlink: make validation more configurable for future strictness
|
2019-04-27 17:07:21 -04:00 |
|
af_inet6.c
|
ipv6: use indirect call wrappers for {tcp, udpv6}_{recv, send}msg()
|
2019-07-03 13:51:54 -07:00 |
|
ah6.c
|
ipv6: Use ipv6_authlen for len
|
2019-07-11 14:43:25 -07:00 |
|
anycast.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
calipso.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13
|
2019-05-21 11:28:45 +02:00 |
|
datagram.c
|
ipv6: fix potential crash in ip6_datagram_dst_update()
|
2019-07-11 14:43:25 -07:00 |
|
esp6.c
|
xfrm: remove get_mtu indirection from xfrm_type
|
2019-07-01 06:16:40 +02:00 |
|
esp6_offload.c
|
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/klassert/ipsec-next
|
2019-07-05 15:01:15 -07:00 |
|
exthdrs.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
exthdrs_core.c
|
ipv6: Use ipv6_authlen for len
|
2019-07-11 14:43:25 -07:00 |
|
exthdrs_offload.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
fib6_notifier.c
|
|
|
|
fib6_rules.c
|
ipv6: honor RT6_LOOKUP_F_DST_NOREF in rule lookup logic
|
2019-06-23 13:24:17 -07:00 |
|
fou6.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
icmp.c
|
ipv6: icmp: allow flowlabel reflection in echo replies
|
2019-07-01 10:54:51 -07:00 |
|
inet6_connection_sock.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
inet6_hashtables.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2019-06-07 11:00:14 -07:00 |
|
ip6_checksum.c
|
net: udp: fix handling of CHECKSUM_COMPLETE packets
|
2018-10-24 14:18:16 -07:00 |
|
ip6_fib.c
|
ipv6: Unlink sibling route in case of failure
|
2019-07-18 12:01:43 -07:00 |
|
ip6_flowlabel.c
|
ipv6: fix static key imbalance in fl_create()
|
2019-07-11 14:43:25 -07:00 |
|
ip6_gre.c
|
ip6_gre: reload ipv6h in prepare_ip6gre_xmit_ipv6
|
2019-07-24 13:59:25 -07:00 |
|
ip6_icmp.c
|
|
|
|
ip6_input.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
ip6_offload.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
ip6_offload.h
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
ip6_output.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2019-06-27 21:06:39 -07:00 |
|
ip6_tunnel.c
|
ip6_tunnel: fix possible use-after-free on xmit
|
2019-07-26 14:17:44 -07:00 |
|
ip6_udp_tunnel.c
|
treewide: Add SPDX license identifier for more missed files
|
2019-05-21 10:50:45 +02:00 |
|
ip6_vti.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
ip6mr.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
ipcomp6.c
|
xfrm: remove type and offload_type map from xfrm_state_afinfo
|
2019-06-06 08:34:50 +02:00 |
|
ipv6_sockglue.c
|
SPDX update for 5.2-rc3, round 1
|
2019-05-31 08:34:32 -07:00 |
|
Kconfig
|
treewide: Add SPDX license identifier - Makefile/Kconfig
|
2019-05-21 10:50:46 +02:00 |
|
Makefile
|
xfrm: make xfrm modes builtin
|
2019-04-08 09:15:17 +02:00 |
|
mcast.c
|
mld: fix memory leak in mld_del_delrec()
|
2019-08-28 14:47:35 -07:00 |
|
mcast_snoop.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 343
|
2019-06-05 17:37:07 +02:00 |
|
mip6.c
|
xfrm: remove type and offload_type map from xfrm_state_afinfo
|
2019-06-06 08:34:50 +02:00 |
|
ndisc.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2019-06-07 11:00:14 -07:00 |
|
netfilter.c
|
netfilter: synproxy: fix building syncookie calls
|
2019-06-20 11:59:36 +02:00 |
|
output_core.c
|
treewide: Add SPDX license identifier for missed files
|
2019-05-21 10:50:45 +02:00 |
|
ping.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
proc.c
|
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
|
2019-06-07 11:00:14 -07:00 |
|
protocol.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
raw.c
|
ipv6: elide flowlabel check if no exclusive leases exist
|
2019-07-08 19:38:03 -07:00 |
|
reassembly.c
|
inet: frags: re-introduce skb coalescing for local delivery
|
2019-08-08 15:55:10 -07:00 |
|
route.c
|
ipv6: Fix unbalanced rcu locking in rt6_update_exception_stamp_rt
|
2019-08-05 13:16:58 -07:00 |
|
seg6.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
seg6_hmac.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
seg6_iptunnel.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
seg6_local.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
sit.c
|
sit: use dst_cache in ipip6_tunnel_xmit
|
2019-07-14 12:15:28 -07:00 |
|
syncookies.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
sysctl_net_ipv6.c
|
proc/sysctl: add shared variables for range check
|
2019-07-18 17:08:07 -07:00 |
|
tcp_ipv6.c
|
ipv6: tcp: fix flowlabels reflection for RST packets
|
2019-07-11 14:43:25 -07:00 |
|
tcpv6_offload.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
tunnel6.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13
|
2019-05-21 11:28:45 +02:00 |
|
udp.c
|
ipv6: elide flowlabel check if no exclusive leases exist
|
2019-07-08 19:38:03 -07:00 |
|
udp_impl.h
|
udp6: add missing rehash callback to udplite
|
2019-01-17 15:01:08 -08:00 |
|
udp_offload.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
udplite.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
xfrm6_input.c
|
net: use skb_sec_path helper in more places
|
2018-12-19 11:21:37 -08:00 |
|
xfrm6_output.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
xfrm6_policy.c
|
xfrm: remove decode_session indirection from afinfo_policy
|
2019-04-23 07:42:20 +02:00 |
|
xfrm6_protocol.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 152
|
2019-05-30 11:26:32 -07:00 |
|
xfrm6_state.c
|
xfrm: remove eth_proto value from xfrm_state_afinfo
|
2019-06-06 08:34:50 +02:00 |
|
xfrm6_tunnel.c
|
treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 13
|
2019-05-21 11:28:45 +02:00 |