Message ID | 20230530113941.1674072-1-VEfanov@ispras.ru (mailing list archive) |
---|---|
State | Accepted |
Commit | 448a5ce1120c5bdbce1f1ccdabcd31c7d029f328 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [v2] udp6: Fix race condition in udp6_sendmsg & connect | expand |
Hello: This patch was applied to netdev/net.git (main) by David S. Miller <davem@davemloft.net>: On Tue, 30 May 2023 14:39:41 +0300 you wrote: > Syzkaller got the following report: > BUG: KASAN: use-after-free in sk_setup_caps+0x621/0x690 net/core/sock.c:2018 > Read of size 8 at addr ffff888027f82780 by task syz-executor276/3255 > > The function sk_setup_caps (called by ip6_sk_dst_store_flow-> > ip6_dst_store) referenced already freed memory as this memory was > freed by parallel task in udpv6_sendmsg->ip6_sk_dst_lookup_flow-> > sk_dst_check. > > [...] Here is the summary with links: - [v2] udp6: Fix race condition in udp6_sendmsg & connect https://git.kernel.org/netdev/net/c/448a5ce1120c You are awesome, thank you!
diff --git a/net/core/sock.c b/net/core/sock.c index 5440e67bcfe3..24f2761bdb1d 100644 --- a/net/core/sock.c +++ b/net/core/sock.c @@ -2381,7 +2381,6 @@ void sk_setup_caps(struct sock *sk, struct dst_entry *dst) { u32 max_segs = 1; - sk_dst_set(sk, dst); sk->sk_route_caps = dst->dev->features; if (sk_is_tcp(sk)) sk->sk_route_caps |= NETIF_F_GSO; @@ -2400,6 +2399,7 @@ void sk_setup_caps(struct sock *sk, struct dst_entry *dst) } } sk->sk_gso_max_segs = max_segs; + sk_dst_set(sk, dst); } EXPORT_SYMBOL_GPL(sk_setup_caps);