diff options
author | Jo-Philipp Wich <jow@openwrt.org> | 2010-05-15 22:36:56 +0000 |
---|---|---|
committer | Jo-Philipp Wich <jow@openwrt.org> | 2010-05-15 22:36:56 +0000 |
commit | 8d429d0e2e4345094516081c17939b3ad9701d4f (patch) | |
tree | 6c413e94015f2ba6351ba4385e49022dba1b3730 | |
parent | 730a6da763ef084aa9fa793997682f87553e6527 (diff) | |
download | upstream-8d429d0e2e4345094516081c17939b3ad9701d4f.tar.gz upstream-8d429d0e2e4345094516081c17939b3ad9701d4f.tar.bz2 upstream-8d429d0e2e4345094516081c17939b3ad9701d4f.zip |
[brcm-2.4] fix a kernel bug where IPv6 packets are received on IPv4 sockets, this fixes dual stack software like OLSRd when running on Kernel 2.4
Signed-off-by: Alina Friedrichsen <x-alina@gmx.net>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@21461 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch | 18 |
1 files changed, 18 insertions, 0 deletions
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 index 0000000000..8d836c2ec5 --- /dev/null +++ b/target/linux/brcm-2.4/patches/200-fix_ipv6_receiving_with_ipv4_socket.patch @@ -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; |