diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2011-06-18 22:59:18 +0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-18 22:59:18 +0400 |
commit | 9aa3c94ce59066f545521033007abb6441706068 (patch) | |
tree | 12b23e85bf4ef55ca856168dcbdb54f39045312a /net | |
parent | eeb1497277d6b1a0a34ed36b97e18f2bd7d6de0d (diff) | |
download | linux-9aa3c94ce59066f545521033007abb6441706068.tar.xz |
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, hash = rt_hash(daddr, saddr, dev->ifindex, rt_genid(dev_net(dev))); rth = rt_intern_hash(hash, rth, skb, dev->ifindex); - err = 0; - if (IS_ERR(rth)) - err = PTR_ERR(rth); + return IS_ERR(rth) ? PTR_ERR(rth) : 0; e_nobufs: return -ENOBUFS; |