aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/udp_impl.h
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2016-11-22 09:06:45 -0800
committerDavid S. Miller <davem@davemloft.net>2016-11-24 15:32:14 -0500
commit30c7be26fd3587abcb69587f781098e3ca2d565b (patch)
tree72bc8ac2183042913c6bf7d9332f811b11378f02 /net/ipv4/udp_impl.h
parentipv6: bump genid when the IFA_F_TENTATIVE flag is clear (diff)
downloadlinux-dev-30c7be26fd3587abcb69587f781098e3ca2d565b.tar.xz
linux-dev-30c7be26fd3587abcb69587f781098e3ca2d565b.zip
udplite: call proper backlog handlers
In commits 93821778def10 ("udp: Fix rcv socket locking") and f7ad74fef3af ("net/ipv6/udp: UDP encapsulation: break backlog_rcv into __udpv6_queue_rcv_skb") UDP backlog handlers were renamed, but UDPlite was forgotten. This leads to crashes if UDPlite header is pulled twice, which happens starting from commit e6afc8ace6dd ("udp: remove headers from UDP packets before queueing") Bug found by syzkaller team, thanks a lot guys ! Note that backlog use in UDP/UDPlite is scheduled to be removed starting from linux-4.10, so this patch is only needed up to linux-4.9 Fixes: 93821778def1 ("udp: Fix rcv socket locking") Fixes: f7ad74fef3af ("net/ipv6/udp: UDP encapsulation: break backlog_rcv into __udpv6_queue_rcv_skb") Fixes: e6afc8ace6dd ("udp: remove headers from UDP packets before queueing") Signed-off-by: Eric Dumazet <edumazet@google.com> Reported-by: Andrey Konovalov <andreyknvl@google.com> Cc: Benjamin LaHaise <bcrl@kvack.org> Cc: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/udp_impl.h')
-rw-r--r--net/ipv4/udp_impl.h2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/udp_impl.h b/net/ipv4/udp_impl.h
index 7e0fe4bdd967..feb50a16398d 100644
--- a/net/ipv4/udp_impl.h
+++ b/net/ipv4/udp_impl.h
@@ -25,7 +25,7 @@ int udp_recvmsg(struct sock *sk, struct msghdr *msg, size_t len, int noblock,
int flags, int *addr_len);
int udp_sendpage(struct sock *sk, struct page *page, int offset, size_t size,
int flags);
-int udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
+int __udp_queue_rcv_skb(struct sock *sk, struct sk_buff *skb);
void udp_destroy_sock(struct sock *sk);
#ifdef CONFIG_PROC_FS