ipv4: fix multicast losses
authorEric Dumazet <eric.dumazet@gmail.com>
Sat, 18 Jun 2011 18:59:18 +0000 (11:59 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sat, 18 Jun 2011 18:59:18 +0000 (11:59 -0700)
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>
net/ipv4/route.c

index 045f0ec6a4a02a257cd60760283cdd3fb8cd5fda..aa13ef1051108dac93a9151d0819d9fd7447ec64 100644 (file)
@@ -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;