All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <gregkh@suse.de>
To: linux-kernel@vger.kernel.org, stable@kernel.org
Cc: Justin Forbes <jmforbes@linuxtx.org>,
	Zwane Mwaikambo <zwane@arm.linux.org.uk>,
	"Theodore Ts'o" <tytso@mit.edu>,
	Randy Dunlap <rdunlap@xenotime.net>,
	Dave Jones <davej@redhat.com>,
	Chuck Wolber <chuckw@quantumlinux.com>,
	Chris Wedgwood <reviews@ml.cw.f00f.org>,
	Michael Krufky <mkrufky@linuxtv.org>,
	Chuck Ebbert <cebbert@redhat.com>,
	Domenico Andreoli <cavokz@gmail.com>,
	torvalds@linux-foundation.org, akpm@linux-foundation.org,
	alan@lxorguk.ukuu.org.uk, bunk@kernel.org,
	Mitsuru Chinen <mitch@linux.vnet.ibm.com>,
	YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>,
	"David S. Miller" <davem@davemloft.net>
Subject: [patch 05/26] Fix some cases of missed IPV6 DAD
Date: Wed, 31 Oct 2007 08:11:14 -0700	[thread overview]
Message-ID: <20071031151114.GF2437@kroah.com> (raw)
In-Reply-To: <20071031151015.GA2437@kroah.com>

[-- Attachment #1: fix-some-cases-of-missed-ipv6-dad.patch --]
[-- Type: text/plain, Size: 2252 bytes --]

2.6.22-stable review patch.  If anyone has any objections, please let us
know.

------------------
From: Mitsuru Chinen <mitch@linux.vnet.ibm.com>

changeset 0fcace22d38ce9216f5ba52f929a99d284aa7e49 from mainline

To judge the timing for DAD, netif_carrier_ok() is used. However,
there is a possibility that dev->qdisc stays noop_qdisc even if
netif_carrier_ok() returns true. In that case, DAD NS is not sent out.
We need to defer the IPv6 device initialization until a valid qdisc
is specified.

Signed-off-by: Mitsuru Chinen <mitch@linux.vnet.ibm.com>
Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>

---
 net/ipv6/addrconf.c |   13 ++++++++++---
 1 file changed, 10 insertions(+), 3 deletions(-)

--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -73,6 +73,7 @@
 #include <net/tcp.h>
 #include <net/ip.h>
 #include <net/netlink.h>
+#include <net/pkt_sched.h>
 #include <linux/if_tunnel.h>
 #include <linux/rtnetlink.h>
 
@@ -212,6 +213,12 @@ static struct ipv6_devconf ipv6_devconf_
 const struct in6_addr in6addr_any = IN6ADDR_ANY_INIT;
 const struct in6_addr in6addr_loopback = IN6ADDR_LOOPBACK_INIT;
 
+/* Check if a valid qdisc is available */
+static inline int addrconf_qdisc_ok(struct net_device *dev)
+{
+	return (dev->qdisc != &noop_qdisc);
+}
+
 static void addrconf_del_timer(struct inet6_ifaddr *ifp)
 {
 	if (del_timer(&ifp->timer))
@@ -376,7 +383,7 @@ static struct inet6_dev * ipv6_add_dev(s
 	}
 #endif
 
-	if (netif_running(dev) && netif_carrier_ok(dev))
+	if (netif_running(dev) && addrconf_qdisc_ok(dev))
 		ndev->if_flags |= IF_READY;
 
 	ipv6_mc_init_dev(ndev);
@@ -2269,7 +2276,7 @@ static int addrconf_notify(struct notifi
 	case NETDEV_UP:
 	case NETDEV_CHANGE:
 		if (event == NETDEV_UP) {
-			if (!netif_carrier_ok(dev)) {
+			if (!addrconf_qdisc_ok(dev)) {
 				/* device is not ready yet. */
 				printk(KERN_INFO
 					"ADDRCONF(NETDEV_UP): %s: "
@@ -2281,7 +2288,7 @@ static int addrconf_notify(struct notifi
 			if (idev)
 				idev->if_flags |= IF_READY;
 		} else {
-			if (!netif_carrier_ok(dev)) {
+			if (!addrconf_qdisc_ok(dev)) {
 				/* device is still not ready. */
 				break;
 			}

-- 

  parent reply	other threads:[~2007-10-31 15:24 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20071031150535.967437651@mini.kroah.org>
2007-10-31 15:10 ` [patch 00/26] 2.6.22-stable review Greg KH
2007-10-31 15:10   ` [patch 01/26] ACPI: disable lower idle C-states across suspend/resume Greg KH
2007-10-31 15:10   ` [patch 02/26] Fix ESP host instance numbering Greg KH
2007-10-31 15:11   ` [patch 03/26] Fix cls_u32 error return handling Greg KH
2007-10-31 15:11   ` [patch 04/26] Fix ieee80211 handling of bogus hdrlength field Greg KH
2007-10-31 15:11   ` Greg KH [this message]
2007-10-31 15:11   ` [patch 06/26] Fix ipv6 redirect processing, leads to TAHI failures Greg KH
2007-10-31 15:11   ` [patch 07/26] Fix ROSE module unload oops Greg KH
2007-10-31 15:11   ` [patch 08/26] Fix zero length socket write() semantics Greg KH
2007-10-31 15:11   ` [patch 09/26] Fix sys_ipc() SEMCTL on sparc64 Greg KH
2007-10-31 15:11   ` [patch 10/26] Fix TCPs ->fastpath_cnt_hit handling Greg KH
2007-10-31 15:11   ` [patch 11/26] : Fix TCP MD5 on big-endian Greg KH
2007-10-31 15:11   ` [patch 12/26] : Fix TCP initial sequence number selection Greg KH
2007-10-31 15:11   ` [patch 13/26] mac80211: filter locally-originated multicast frames Greg KH
2007-10-31 15:11   ` [patch 14/26] libertas: fix endianness breakage Greg KH
2007-10-31 15:11   ` [patch 15/26] libertas: more " Greg KH
2007-10-31 15:11   ` [patch 16/26] Add get_unaligned to ieee80211_get_radiotap_len Greg KH
2007-10-31 15:11   ` [patch 17/26] firewire: fix unloading of fw-ohci while devices are attached Greg KH
2007-10-31 15:12   ` [patch 18/26] netdrvr: natsemi: Fix device removal bug Greg KH
2007-10-31 15:12   ` [patch 19/26] dm9601: Fix receive MTU Greg KH
2007-10-31 15:12   ` [patch 20/26] V4L: ivtv: fix udma yuv bug Greg KH
2007-10-31 15:12   ` [patch 21/26] hwmon/lm87: Fix a division by zero Greg KH
2007-10-31 15:12   ` [patch 22/26] hwmon/lm87: Disable VID when it should be Greg KH
2007-10-31 15:12   ` [patch 23/26] hwmon/w83627hf: Fix setting fan min right after driver load Greg KH
2007-10-31 15:12   ` [patch 24/26] hwmon/w83627hf: Dont assume bank 0 Greg KH
2007-10-31 15:12   ` [patch 25/26] i915: fix vbl swap allocation size Greg KH
2007-10-31 15:12   ` [patch 26/26] POWERPC: Fix handling of stfiwx math emulation Greg KH
2007-10-31 15:21   ` [patch 00/26] 2.6.22-stable review Greg KH
2007-10-31 16:25   ` [patch 27/26] lockdep: fix mismatched lockdep_depth/curr_chain_hash Greg KH

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20071031151114.GF2437@kroah.com \
    --to=gregkh@suse.de \
    --cc=akpm@linux-foundation.org \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=bunk@kernel.org \
    --cc=cavokz@gmail.com \
    --cc=cebbert@redhat.com \
    --cc=chuckw@quantumlinux.com \
    --cc=davej@redhat.com \
    --cc=davem@davemloft.net \
    --cc=jmforbes@linuxtx.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mitch@linux.vnet.ibm.com \
    --cc=mkrufky@linuxtv.org \
    --cc=rdunlap@xenotime.net \
    --cc=reviews@ml.cw.f00f.org \
    --cc=stable@kernel.org \
    --cc=torvalds@linux-foundation.org \
    --cc=tytso@mit.edu \
    --cc=yoshfuji@linux-ipv6.org \
    --cc=zwane@arm.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.