summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch
blob: 8d836c2ec5ec24d213d3161e8fbb4915460cc937 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--- a/net/ipv4/udp.c	2009-12-26 00:06:59.000000000 +0100
+++ b/net/ipv4/udp.c	2009-12-27 00:27:05.003012266 +0100
@@ -711,7 +711,14 @@
 	skb = skb_recv_datagram(sk, flags, noblock, &err);
 	if (!skb)
 		goto out;
-  
+
+	if (skb->nh.iph->version != 4) {
+		skb_free_datagram(sk, skb);
+		if (noblock)
+			return -EAGAIN;
+		goto try_again;
+	}
+
   	copied = skb->len - sizeof(struct udphdr);
 	if (copied > len) {
 		copied = len;