fix a kernel bug where IPv6 packets are received on IPv4 sockets, this fixes dual...
authorJo-Philipp Wich <jow@openwrt.org>
Sat, 15 May 2010 22:36:56 +0000 (22:36 +0000)
committerJo-Philipp Wich <jow@openwrt.org>
Sat, 15 May 2010 22:36:56 +0000 (22:36 +0000)
SVN-Revision: 21461

target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch [new file with mode: 0644]

diff --git a/target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch b/target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch
new file mode 100644 (file)
index 0000000..8d836c2
--- /dev/null
@@ -0,0 +1,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;