ipv6: restore the behavior of ipv6_sock_ac_drop()
authorWANG Cong <xiyou.wangcong@gmail.com>
Fri, 5 Sep 2014 21:33:00 +0000 (14:33 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Oct 2014 06:36:41 +0000 (08:36 +0200)
[ Upstream commit de185ab46cb02df9738b0d898b0c3a89181c5526 ]

It is possible that the interface is already gone after joining
the list of anycast on this interface as we don't hold a refcount
for the device, in this case we are safe to ignore the error.

What's more important, for API compatibility we should not
change this behavior for applications even if it were correct.

Fixes: commit a9ed4a2986e13011 ("ipv6: fix rtnl locking in setsockopt for anycast and multicast")
Cc: Sabrina Dubroca <sd@queasysnail.net>
Cc: David S. Miller <davem@davemloft.net>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
net/ipv6/anycast.c

index 45b9d81d91e810976aa28ac92e9a0bb457a37fd4..ff2de7d9d8e6553de407b7aa5a490fc5c9a40461 100644 (file)
@@ -182,8 +182,6 @@ int ipv6_sock_ac_drop(struct sock *sk, int ifindex, const struct in6_addr *addr)
        rtnl_unlock();
 
        sock_kfree_s(sk, pac, sizeof(*pac));
-       if (!dev)
-               return -ENODEV;
        return 0;
 }