diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-06-18 14:59:18 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-18 14:59:18 -0400 |
commit | 9aa3c94ce59066f545521033007abb6441706068 (patch) | |
tree | 12b23e85bf4ef55ca856168dcbdb54f39045312a /net | |
parent | eeb1497277d6b1a0a34ed36b97e18f2bd7d6de0d (diff) |
ipv4: fix multicast losses
Knut Tidemann found that first packet of a multicast flow was not
correctly received, and bisected the regression to commit b23dd4fe42b4
(Make output route lookup return rtable directly.)
Special thanks to Knut, who provided a very nice bug report, including
sample programs to demonstrate the bug.
Reported-and-bisectedby: Knut Tidemann <knut.andre.tidemann@jotron.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv4/route.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/ipv4/route.c b/net/ipv4/route.c index 045f0ec6a4a0..aa13ef105110 100644 --- a/net/ipv4/route.c +++ b/net/ipv4/route.c | |||
@@ -1902,9 +1902,7 @@ static int ip_route_input_mc(struct sk_buff *skb, __be32 daddr, __be32 saddr, | |||
1902 | 1902 | ||
1903 | hash = rt_hash(daddr, saddr, dev->ifindex, rt_genid(dev_net(dev))); | 1903 | hash = rt_hash(daddr, saddr, dev->ifindex, rt_genid(dev_net(dev))); |
1904 | rth = rt_intern_hash(hash, rth, skb, dev->ifindex); | 1904 | rth = rt_intern_hash(hash, rth, skb, dev->ifindex); |
1905 | err = 0; | 1905 | return IS_ERR(rth) ? PTR_ERR(rth) : 0; |
1906 | if (IS_ERR(rth)) | ||
1907 | err = PTR_ERR(rth); | ||
1908 | 1906 | ||
1909 | e_nobufs: | 1907 | e_nobufs: |
1910 | return -ENOBUFS; | 1908 | return -ENOBUFS; |