From 5682f0d057018b263cd2553156f34c3c43dd3303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ilpo=20J=C3=A4rvinen?= Date: Sun, 14 Dec 2008 23:15:21 -0800 Subject: [PATCH] --- yaml --- r: 122698 b: refs/heads/master c: 448eb71f40120a8fd11ebd58153c271c63e6f862 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/net/ipv6/mcast.c | 25 ++++++++++++++----------- 2 files changed, 15 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index c2ef49d425b0..bf90c0792d79 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5ce1bbb97bf1e6707102d30499e7feaa1e6a2134 +refs/heads/master: 448eb71f40120a8fd11ebd58153c271c63e6f862 diff --git a/trunk/net/ipv6/mcast.c b/trunk/net/ipv6/mcast.c index 0f3896032830..a51fb33e6864 100644 --- a/trunk/net/ipv6/mcast.c +++ b/trunk/net/ipv6/mcast.c @@ -303,20 +303,23 @@ static struct inet6_dev *ip6_mc_find_dev(struct net *net, dev = dev_get_by_index(net, ifindex); if (!dev) - return NULL; + goto nodev; idev = in6_dev_get(dev); - if (!idev) { - dev_put(dev); - return NULL; - } + if (!idev) + goto release; read_lock_bh(&idev->lock); - if (idev->dead) { - read_unlock_bh(&idev->lock); - in6_dev_put(idev); - dev_put(dev); - return NULL; - } + if (idev->dead) + goto unlock_release; + return idev; + +unlock_release: + read_unlock_bh(&idev->lock); + in6_dev_put(idev); +release: + dev_put(dev); +nodev: + return NULL; } void ipv6_sock_mc_close(struct sock *sk)