mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Willy Tarreau <w@1wt.eu>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org, linux@roeck-us.net
Cc: Hannes Frederic Sowa <hannes@stressinduktion.org>,
	Flavio Leitner <fleitner@redhat.com>,
	Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>,
	David Stevens <dlstevens@us.ibm.com>,
	"David S . Miller" <davem@davemloft.net>,
	Mike Manning <mmanning@brocade.com>, Willy Tarreau <w@1wt.eu>
Subject: [PATCH 3.10 220/319] ipv6: split duplicate address detection and router solicitation timer
Date: Sun,  5 Feb 2017 20:20:42 +0100	[thread overview]
Message-ID: <1486322541-8206-121-git-send-email-w@1wt.eu> (raw)
In-Reply-To: <1486322541-8206-1-git-send-email-w@1wt.eu>

From: Hannes Frederic Sowa <hannes@stressinduktion.org>

commit b7b1bfce0bb68bd8f6e62a28295922785cc63781 upstream.

This patch splits the timers for duplicate address detection and router
solicitations apart. The router solicitations timer goes into inet6_dev
and the dad timer stays in inet6_ifaddr.

The reason behind this patch is to reduce the number of unneeded router
solicitations send out by the host if additional link-local addresses
are created. Currently we send out RS for every link-local address on
an interface.

If the RS timer fires we pick a source address with ipv6_get_lladdr. This
change could hurt people adding additional link-local addresses and
specifying these addresses in the radvd clients section because we
no longer guarantee that we use every ll address as source address in
router solicitations.

Cc: Flavio Leitner <fleitner@redhat.com>
Cc: Hideaki YOSHIFUJI <yoshfuji@linux-ipv6.org>
Cc: David Stevens <dlstevens@us.ibm.com>
Signed-off-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Reviewed-by: Flavio Leitner <fbl@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Cc: <stable@vger.kernel.org> 
[Mike Manning <mmanning@brocade.com>: resolved conflicts with 36bddb]
Signed-off-by: Mike Manning <mmanning@brocade.com>
Signed-off-by: Willy Tarreau <w@1wt.eu>
---
 include/net/if_inet6.h |   8 ++-
 net/ipv6/addrconf.c    | 136 ++++++++++++++++++++++++++-----------------------
 2 files changed, 79 insertions(+), 65 deletions(-)

diff --git a/include/net/if_inet6.h b/include/net/if_inet6.h
index 100fb8c..3b558c6 100644
--- a/include/net/if_inet6.h
+++ b/include/net/if_inet6.h
@@ -50,7 +50,7 @@ struct inet6_ifaddr {
 
 	int			state;
 
-	__u8			probes;
+	__u8			dad_probes;
 	__u8			flags;
 
 	__u16			scope;
@@ -58,7 +58,7 @@ struct inet6_ifaddr {
 	unsigned long		cstamp;	/* created timestamp */
 	unsigned long		tstamp; /* updated timestamp */
 
-	struct timer_list	timer;
+	struct timer_list	dad_timer;
 
 	struct inet6_dev	*idev;
 	struct rt6_info		*rt;
@@ -195,6 +195,10 @@ struct inet6_dev {
 	struct inet6_dev	*next;
 	struct ipv6_devconf	cnf;
 	struct ipv6_devstat	stats;
+
+	struct timer_list	rs_timer;
+	__u8			rs_probes;
+
 	unsigned long		tstamp; /* ipv6InterfaceTable update timestamp */
 	struct rcu_head		rcu;
 };
diff --git a/net/ipv6/addrconf.c b/net/ipv6/addrconf.c
index d0912ac..4ff6a9c 100644
--- a/net/ipv6/addrconf.c
+++ b/net/ipv6/addrconf.c
@@ -253,37 +253,32 @@ static inline bool addrconf_qdisc_ok(const struct net_device *dev)
 	return !qdisc_tx_is_noop(dev);
 }
 
-static void addrconf_del_timer(struct inet6_ifaddr *ifp)
+static void addrconf_del_rs_timer(struct inet6_dev *idev)
 {
-	if (del_timer(&ifp->timer))
+	if (del_timer(&idev->rs_timer))
+		__in6_dev_put(idev);
+}
+
+static void addrconf_del_dad_timer(struct inet6_ifaddr *ifp)
+{
+	if (del_timer(&ifp->dad_timer))
 		__in6_ifa_put(ifp);
 }
 
-enum addrconf_timer_t {
-	AC_NONE,
-	AC_DAD,
-	AC_RS,
-};
+static void addrconf_mod_rs_timer(struct inet6_dev *idev,
+				  unsigned long when)
+{
+	if (!timer_pending(&idev->rs_timer))
+		in6_dev_hold(idev);
+	mod_timer(&idev->rs_timer, jiffies + when);
+}
 
-static void addrconf_mod_timer(struct inet6_ifaddr *ifp,
-			       enum addrconf_timer_t what,
-			       unsigned long when)
+static void addrconf_mod_dad_timer(struct inet6_ifaddr *ifp,
+				   unsigned long when)
 {
-	if (!del_timer(&ifp->timer))
+	if (!timer_pending(&ifp->dad_timer))
 		in6_ifa_hold(ifp);
-
-	switch (what) {
-	case AC_DAD:
-		ifp->timer.function = addrconf_dad_timer;
-		break;
-	case AC_RS:
-		ifp->timer.function = addrconf_rs_timer;
-		break;
-	default:
-		break;
-	}
-	ifp->timer.expires = jiffies + when;
-	add_timer(&ifp->timer);
+	mod_timer(&ifp->dad_timer, jiffies + when);
 }
 
 static int snmp6_alloc_dev(struct inet6_dev *idev)
@@ -326,6 +321,7 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
 
 	WARN_ON(!list_empty(&idev->addr_list));
 	WARN_ON(idev->mc_list != NULL);
+	WARN_ON(timer_pending(&idev->rs_timer));
 
 #ifdef NET_REFCNT_DEBUG
 	pr_debug("%s: %s\n", __func__, dev ? dev->name : "NIL");
@@ -357,7 +353,8 @@ static struct inet6_dev *ipv6_add_dev(struct net_device *dev)
 	rwlock_init(&ndev->lock);
 	ndev->dev = dev;
 	INIT_LIST_HEAD(&ndev->addr_list);
-
+	setup_timer(&ndev->rs_timer, addrconf_rs_timer,
+		    (unsigned long)ndev);
 	memcpy(&ndev->cnf, dev_net(dev)->ipv6.devconf_dflt, sizeof(ndev->cnf));
 	ndev->cnf.mtu6 = dev->mtu;
 	ndev->cnf.sysctl = NULL;
@@ -776,7 +773,7 @@ void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp)
 
 	in6_dev_put(ifp->idev);
 
-	if (del_timer(&ifp->timer))
+	if (del_timer(&ifp->dad_timer))
 		pr_notice("Timer is still running, when freeing ifa=%p\n", ifp);
 
 	if (ifp->state != INET6_IFADDR_STATE_DEAD) {
@@ -869,9 +866,9 @@ ipv6_add_addr(struct inet6_dev *idev, const struct in6_addr *addr, int pfxlen,
 
 	spin_lock_init(&ifa->lock);
 	spin_lock_init(&ifa->state_lock);
-	init_timer(&ifa->timer);
+	setup_timer(&ifa->dad_timer, addrconf_dad_timer,
+		    (unsigned long)ifa);
 	INIT_HLIST_NODE(&ifa->addr_lst);
-	ifa->timer.data = (unsigned long) ifa;
 	ifa->scope = scope;
 	ifa->prefix_len = pfxlen;
 	ifa->flags = flags | IFA_F_TENTATIVE;
@@ -994,7 +991,7 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
 	}
 	write_unlock_bh(&idev->lock);
 
-	addrconf_del_timer(ifp);
+	addrconf_del_dad_timer(ifp);
 
 	ipv6_ifa_notify(RTM_DELADDR, ifp);
 
@@ -1617,7 +1614,7 @@ static void addrconf_dad_stop(struct inet6_ifaddr *ifp, int dad_failed)
 {
 	if (ifp->flags&IFA_F_PERMANENT) {
 		spin_lock_bh(&ifp->lock);
-		addrconf_del_timer(ifp);
+		addrconf_del_dad_timer(ifp);
 		ifp->flags |= IFA_F_TENTATIVE;
 		if (dad_failed)
 			ifp->flags |= IFA_F_DADFAILED;
@@ -3085,7 +3082,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 		hlist_for_each_entry_rcu(ifa, h, addr_lst) {
 			if (ifa->idev == idev) {
 				hlist_del_init_rcu(&ifa->addr_lst);
-				addrconf_del_timer(ifa);
+				addrconf_del_dad_timer(ifa);
 				goto restart;
 			}
 		}
@@ -3094,6 +3091,8 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 
 	write_lock_bh(&idev->lock);
 
+	addrconf_del_rs_timer(idev);
+
 	/* Step 2: clear flags for stateless addrconf */
 	if (!how)
 		idev->if_flags &= ~(IF_RS_SENT|IF_RA_RCVD|IF_READY);
@@ -3123,7 +3122,7 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 	while (!list_empty(&idev->addr_list)) {
 		ifa = list_first_entry(&idev->addr_list,
 				       struct inet6_ifaddr, if_list);
-		addrconf_del_timer(ifa);
+		addrconf_del_dad_timer(ifa);
 
 		list_del(&ifa->if_list);
 
@@ -3165,10 +3164,10 @@ static int addrconf_ifdown(struct net_device *dev, int how)
 
 static void addrconf_rs_timer(unsigned long data)
 {
-	struct inet6_ifaddr *ifp = (struct inet6_ifaddr *) data;
-	struct inet6_dev *idev = ifp->idev;
+	struct inet6_dev *idev = (struct inet6_dev *)data;
+	struct in6_addr lladdr;
 
-	read_lock(&idev->lock);
+	write_lock(&idev->lock);
 	if (idev->dead || !(idev->if_flags & IF_READY))
 		goto out;
 
@@ -3179,18 +3178,19 @@ static void addrconf_rs_timer(unsigned long data)
 	if (idev->if_flags & IF_RA_RCVD)
 		goto out;
 
-	spin_lock(&ifp->lock);
-	if (ifp->probes++ < idev->cnf.rtr_solicits) {
-		/* The wait after the last probe can be shorter */
-		addrconf_mod_timer(ifp, AC_RS,
-				   (ifp->probes == idev->cnf.rtr_solicits) ?
-				   idev->cnf.rtr_solicit_delay :
-				   idev->cnf.rtr_solicit_interval);
-		spin_unlock(&ifp->lock);
+	if (idev->rs_probes++ < idev->cnf.rtr_solicits) {
+		if (!__ipv6_get_lladdr(idev, &lladdr, IFA_F_TENTATIVE))
+			ndisc_send_rs(idev->dev, &lladdr,
+				      &in6addr_linklocal_allrouters);
+		else
+			goto out;
 
-		ndisc_send_rs(idev->dev, &ifp->addr, &in6addr_linklocal_allrouters);
+		/* The wait after the last probe can be shorter */
+		addrconf_mod_rs_timer(idev, (idev->rs_probes ==
+					     idev->cnf.rtr_solicits) ?
+				      idev->cnf.rtr_solicit_delay :
+				      idev->cnf.rtr_solicit_interval);
 	} else {
-		spin_unlock(&ifp->lock);
 		/*
 		 * Note: we do not support deprecated "all on-link"
 		 * assumption any longer.
@@ -3199,8 +3199,8 @@ static void addrconf_rs_timer(unsigned long data)
 	}
 
 out:
-	read_unlock(&idev->lock);
-	in6_ifa_put(ifp);
+	write_unlock(&idev->lock);
+	in6_dev_put(idev);
 }
 
 /*
@@ -3216,8 +3216,8 @@ static void addrconf_dad_kick(struct inet6_ifaddr *ifp)
 	else
 		rand_num = net_random() % (idev->cnf.rtr_solicit_delay ? : 1);
 
-	ifp->probes = idev->cnf.dad_transmits;
-	addrconf_mod_timer(ifp, AC_DAD, rand_num);
+	ifp->dad_probes = idev->cnf.dad_transmits;
+	addrconf_mod_dad_timer(ifp, rand_num);
 }
 
 static void addrconf_dad_start(struct inet6_ifaddr *ifp)
@@ -3278,40 +3278,40 @@ static void addrconf_dad_timer(unsigned long data)
 	struct inet6_dev *idev = ifp->idev;
 	struct in6_addr mcaddr;
 
-	if (!ifp->probes && addrconf_dad_end(ifp))
+	if (!ifp->dad_probes && addrconf_dad_end(ifp))
 		goto out;
 
-	read_lock(&idev->lock);
+	write_lock(&idev->lock);
 	if (idev->dead || !(idev->if_flags & IF_READY)) {
-		read_unlock(&idev->lock);
+		write_unlock(&idev->lock);
 		goto out;
 	}
 
 	spin_lock(&ifp->lock);
 	if (ifp->state == INET6_IFADDR_STATE_DEAD) {
 		spin_unlock(&ifp->lock);
-		read_unlock(&idev->lock);
+		write_unlock(&idev->lock);
 		goto out;
 	}
 
-	if (ifp->probes == 0) {
+	if (ifp->dad_probes == 0) {
 		/*
 		 * DAD was successful
 		 */
 
 		ifp->flags &= ~(IFA_F_TENTATIVE|IFA_F_OPTIMISTIC|IFA_F_DADFAILED);
 		spin_unlock(&ifp->lock);
-		read_unlock(&idev->lock);
+		write_unlock(&idev->lock);
 
 		addrconf_dad_completed(ifp);
 
 		goto out;
 	}
 
-	ifp->probes--;
-	addrconf_mod_timer(ifp, AC_DAD, ifp->idev->nd_parms->retrans_time);
+	ifp->dad_probes--;
+	addrconf_mod_dad_timer(ifp, ifp->idev->nd_parms->retrans_time);
 	spin_unlock(&ifp->lock);
-	read_unlock(&idev->lock);
+	write_unlock(&idev->lock);
 
 	/* send a neighbour solicitation for our addr */
 	addrconf_addr_solict_mult(&ifp->addr, &mcaddr);
@@ -3323,6 +3323,9 @@ out:
 static void addrconf_dad_completed(struct inet6_ifaddr *ifp)
 {
 	struct net_device *dev = ifp->idev->dev;
+	struct in6_addr lladdr;
+
+	addrconf_del_dad_timer(ifp);
 
 	/*
 	 *	Configure the address for reception. Now it is valid.
@@ -3343,13 +3346,20 @@ static void addrconf_dad_completed(struct inet6_ifaddr *ifp)
 		 *	[...] as part of DAD [...] there is no need
 		 *	to delay again before sending the first RS
 		 */
-		ndisc_send_rs(ifp->idev->dev, &ifp->addr, &in6addr_linklocal_allrouters);
+		if (!ipv6_get_lladdr(dev, &lladdr, IFA_F_TENTATIVE))
+			ndisc_send_rs(dev, &lladdr,
+				      &in6addr_linklocal_allrouters);
+		else
+			return;
 
-		spin_lock_bh(&ifp->lock);
-		ifp->probes = 1;
+		write_lock_bh(&ifp->idev->lock);
+		spin_lock(&ifp->lock);
+		ifp->idev->rs_probes = 1;
 		ifp->idev->if_flags |= IF_RS_SENT;
-		addrconf_mod_timer(ifp, AC_RS, ifp->idev->cnf.rtr_solicit_interval);
-		spin_unlock_bh(&ifp->lock);
+		addrconf_mod_rs_timer(ifp->idev,
+				      ifp->idev->cnf.rtr_solicit_interval);
+		spin_unlock(&ifp->lock);
+		write_unlock_bh(&ifp->idev->lock);
 	}
 }
 
-- 
2.8.0.rc2.1.gbe9624a

  parent reply	other threads:[~2017-02-05 19:24 UTC|newest]

Thread overview: 239+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-05 19:18 [PATCH 3.10 100/319] fix fault_in_multipages_...() on architectures with no-op access_ok() Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 101/319] fix memory leaks in tracing_buffers_splice_read() Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 102/319] arc: don't leak bits of kernel stack into coredump Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 103/319] Fix potential infoleak in older kernels Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 104/319] swapfile: fix memory corruption via malformed swapfile Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 105/319] coredump: fix unfreezable coredumping task Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 106/319] usb: dwc3: gadget: increment request->actual once Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 107/319] USB: validate wMaxPacketValue entries in endpoint descriptors Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 108/319] USB: fix typo in wMaxPacketSize validation Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 109/319] usb: xhci: Fix panic if disconnect Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 110/319] USB: serial: fix memleak in driver-registration error path Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 111/319] USB: kobil_sct: fix non-atomic allocation in write path Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 112/319] USB: serial: mos7720: " Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 113/319] USB: serial: mos7840: " Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 114/319] usb: renesas_usbhs: fix clearing the {BRDY,BEMP}STS condition Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 115/319] USB: change bInterval default to 10 ms Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 116/319] usb: gadget: fsl_qe_udc: signedness bug in qe_get_frame() Willy Tarreau
2017-02-05 19:18 ` [PATCH 3.10 117/319] USB: serial: cp210x: fix hardware flow-control disable Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 118/319] usb: misc: legousbtower: Fix NULL pointer deference Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 119/319] usb: gadget: function: u_ether: don't starve tx request queue Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 120/319] USB: serial: cp210x: fix tiocmget error handling Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 121/319] usb: gadget: u_ether: remove interrupt throttling Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 122/319] usb: chipidea: move the lock initialization to core file Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 123/319] Fix USB CB/CBI storage devices with CONFIG_VMAP_STACK=y Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 124/319] ALSA: rawmidi: Fix possible deadlock with virmidi registration Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 125/319] ALSA: timer: fix NULL pointer dereference in read()/ioctl() race Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 126/319] ALSA: timer: fix division by zero after SNDRV_TIMER_IOCTL_CONTINUE Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 127/319] ALSA: timer: fix NULL pointer dereference on memory allocation failure Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 128/319] ALSA: ali5451: Fix out-of-bound position reporting Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 129/319] ALSA: pcm : Call kill_fasync() in stream lock Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 130/319] zfcp: fix fc_host port_type with NPIV Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 131/319] zfcp: fix ELS/GS request&response length for hardware data router Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 132/319] zfcp: close window with unblocked rport during rport gone Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 133/319] zfcp: retain trace level for SCSI and HBA FSF response records Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 134/319] zfcp: restore: Dont use 0 to indicate invalid LUN in rec trace Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 135/319] zfcp: trace on request for open and close of WKA port Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 136/319] zfcp: restore tracing of handle for port and LUN with HBA records Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 137/319] zfcp: fix D_ID field with actual value on tracing SAN responses Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 138/319] zfcp: fix payload trace length for SAN request&response Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 139/319] zfcp: trace full payload of all SAN records (req,resp,iels) Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 140/319] scsi: zfcp: spin_lock_irqsave() is not nestable Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 141/319] scsi: mpt3sas: Fix secure erase premature termination Willy Tarreau
2017-02-06 16:21   ` Sathya Prakash Veerichetty
2017-02-06 22:26     ` Willy Tarreau
2017-02-07  6:38       ` James Bottomley
2017-02-07  6:59         ` Willy Tarreau
2017-02-07 17:02           ` James Bottomley
2017-02-07 17:12             ` Willy Tarreau
2017-02-08  6:53               ` Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 142/319] mpt2sas: " Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 143/319] scsi: megaraid_sas: Fix data integrity failure for JBOD (passthrough) devices Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 144/319] scsi: megaraid_sas: fix macro MEGASAS_IS_LOGICAL to avoid regression Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 145/319] scsi: ibmvfc: Fix I/O hang when port is not mapped Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 146/319] scsi: Fix use-after-free Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 147/319] scsi: arcmsr: Buffer overflow in arcmsr_iop_message_xfer() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 148/319] scsi: scsi_debug: Fix memory leak if LBP enabled and module is unloaded Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 149/319] scsi: arcmsr: Send SYNCHRONIZE_CACHE command to firmware Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 150/319] ext4: validate that metadata blocks do not overlap superblock Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 151/319] ext4: avoid modifying checksum fields directly during checksum verification Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 152/319] ext4: use __GFP_NOFAIL in ext4_free_blocks() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 153/319] ext4: reinforce check of i_dtime when clearing high fields of uid and gid Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 154/319] ext4: allow DAX writeback for hole punch Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 155/319] ext4: sanity check the block and cluster size at mount time Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 156/319] reiserfs: fix "new_insert_key may be used uninitialized ..." Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 157/319] reiserfs: Unlock superblock before calling reiserfs_quota_on_mount() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 158/319] xfs: fix superblock inprogress check Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 159/319] libxfs: clean up _calc_dquots_per_chunk Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 160/319] btrfs: ensure that file descriptor used with subvol ioctls is a dir Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 161/319] ocfs2/dlm: fix race between convert and migration Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 162/319] ocfs2: fix start offset to ocfs2_zero_range_for_truncate() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 163/319] ubifs: Fix assertion in layout_in_gaps() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 164/319] ubifs: Fix xattr_names length in exit paths Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 165/319] UBIFS: Fix possible memory leak in ubifs_readdir() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 166/319] ubifs: Abort readdir upon error Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 167/319] ubifs: Fix regression in ubifs_readdir() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 168/319] UBI: fastmap: scrub PEB when bitflips are detected in a free PEB EC header Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 169/319] NFSv4.x: Fix a refcount leak in nfs_callback_up_net Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 170/319] NFSD: Using free_conn free connection Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 171/319] NFS: Don't drop CB requests with invalid principals Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 172/319] NFSv4: Open state recovery must account for file permission changes Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 173/319] fs/seq_file: fix out-of-bounds read Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 174/319] fs/super.c: fix race between freeze_super() and thaw_super() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 175/319] isofs: Do not return EACCES for unknown filesystems Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 176/319] hostfs: Freeing an ERR_PTR in hostfs_fill_sb_common() Willy Tarreau
2017-02-05 19:19 ` [PATCH 3.10 177/319] driver core: Delete an unnecessary check before the function call "put_device" Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 178/319] driver core: fix race between creating/querying glue dir and its cleanup Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 179/319] drm/radeon: fix radeon_move_blit on 32bit systems Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 180/319] drm: Reject page_flip for !DRIVER_MODESET Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 181/319] drm/radeon: Ensure vblank interrupt is enabled on DPMS transition to on Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 182/319] qxl: check for kmap failures Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 183/319] Input: i8042 - break load dependency between atkbd/psmouse and i8042 Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 184/319] Input: i8042 - set up shared ps2_cmd_mutex for AUX ports Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 185/319] Input: ili210x - fix permissions on "calibrate" attribute Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 186/319] hwrng: exynos - Disable runtime PM on probe failure Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 187/319] hwrng: omap - Fix assumption that runtime_get_sync will always succeed Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 188/319] hwrng: omap - Only fail if pm_runtime_get_sync returns < 0 Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 189/319] i2c-eg20t: fix race between i2c init and interrupt enable Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 190/319] em28xx-i2c: rt_mutex_trylock() returns zero on failure Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 191/319] i2c: core: fix NULL pointer dereference under race condition Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 192/319] i2c: at91: fix write transfers by clearing pending interrupt first Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 193/319] iio: accel: kxsd9: Fix raw read return Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 194/319] iio: accel: kxsd9: Fix scaling bug Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 195/319] thermal: hwmon: Properly report critical temperature in sysfs Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 196/319] cdc-acm: fix wrong pipe type on rx interrupt xfers Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 197/319] timers: Use proper base migration in add_timer_on() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 198/319] EDAC: Increment correct counter in edac_inc_ue_error() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 199/319] IB/srpt: Simplify srpt_handle_tsk_mgmt() Willy Tarreau
2017-02-06  5:14   ` Bart Van Assche
2017-02-06  6:32     ` Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 200/319] IB/ipoib: Fix memory corruption in ipoib cm mode connect flow Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 201/319] IB/core: Fix use after free in send_leave function Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 202/319] IB/ipoib: Don't allow MC joins during light MC flush Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 203/319] IB/mlx4: Fix incorrect MC join state bit-masking on SR-IOV Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 204/319] IB/mlx4: Fix create CQ error flow Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 205/319] IB/uverbs: Fix leak of XRC target QPs Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 206/319] IB/cm: Mark stale CM id's whenever the mad agent was unregistered Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 207/319] mtd: blkdevs: fix potential deadlock + lockdep warnings Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 208/319] mtd: pmcmsp-flash: Allocating too much in init_msp_flash() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 209/319] mtd: nand: davinci: Reinitialize the HW ECC engine in 4bit hwctl Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 210/319] perf symbols: Fixup symbol sizes before picking best ones Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 211/319] perf: Tighten (and fix) the grouping condition Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 212/319] tty: Prevent ldisc drivers from re-using stale tty fields Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 213/319] tty: limit terminal size to 4M chars Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 214/319] tty: vt, fix bogus division in csi_J Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 215/319] vt: clear selection before resizing Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 216/319] drivers/vfio: Rework offsetofend() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 217/319] include/stddef.h: Move offsetofend() from vfio.h to a generic kernel header Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 218/319] stddef.h: move offsetofend inside #ifndef/#endif guard, neaten Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 219/319] ipv6: don't call fib6_run_gc() until routing is ready Willy Tarreau
2017-02-05 19:20 ` Willy Tarreau [this message]
2017-02-05 19:20 ` [PATCH 3.10 221/319] ipv6: move DAD and addrconf_verify processing to workqueue Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 222/319] ipv6: addrconf: fix dev refcont leak when DAD failed Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 223/319] ipv6: fix rtnl locking in setsockopt for anycast and multicast Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 224/319] ip6_gre: fix flowi6_proto value in ip6gre_xmit_other() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 225/319] ipv6: correctly add local routes when lo goes up Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 226/319] ipv6: dccp: fix out of bound access in dccp_v6_err() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 227/319] ipv6: dccp: add missing bind_conflict to dccp_ipv6_mapped Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 228/319] ip6_tunnel: Clear IP6CB in ip6tunnel_xmit() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 229/319] ip6_tunnel: disable caching when the traffic class is inherited Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 230/319] net/irda: handle iriap_register_lsap() allocation failure Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 231/319] tcp: fix use after free in tcp_xmit_retransmit_queue() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 232/319] tcp: properly scale window in tcp_v[46]_reqsk_send_ack() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 233/319] tcp: fix overflow in __tcp_retransmit_skb() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 234/319] tcp: fix wrong checksum calculation on MTU probing Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 235/319] tcp: take care of truncations done by sk_filter() Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 236/319] bonding: Fix bonding crash Willy Tarreau
2017-02-05 19:20 ` [PATCH 3.10 237/319] net: ratelimit warnings about dst entry refcount underflow or overflow Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 238/319] mISDN: Support DR6 indication in mISDNipac driver Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 239/319] mISDN: Fixing missing validation in base_sock_bind() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 240/319] net: disable fragment reassembly if high_thresh is set to zero Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 241/319] ipvs: count pre-established TCP states as active Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 242/319] iwlwifi: pcie: fix access to scratch buffer Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 243/319] svc: Avoid garbage replies when pc_func() returns rpc_drop_reply Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 244/319] brcmsmac: Free packet if dma_mapping_error() fails in dma_rxfill Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 245/319] brcmsmac: Initialize power in brcms_c_stf_ss_algo_channel_get() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 246/319] brcmfmac: avoid potential stack overflow in brcmf_cfg80211_start_ap() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 247/319] pstore: Fix buffer overflow while write offset equal to buffer size Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 248/319] net/mlx4_core: Allow resetting VF admin mac to zero Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 249/319] firewire: net: guard against rx buffer overflows Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 250/319] firewire: net: fix fragmented datagram_size off-by-one Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 251/319] netfilter: fix namespace handling in nf_log_proc_dostring Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 252/319] can: bcm: fix warning in bcm_connect/proc_register Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 253/319] net: fix sk_mem_reclaim_partial() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 254/319] net: avoid sk_forward_alloc overflows Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 255/319] ipmr, ip6mr: fix scheduling while atomic and a deadlock with ipmr_get_route Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 256/319] packet: call fanout_release, while UNREGISTERING a netdev Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 257/319] net: sctp, forbid negative length Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 258/319] sctp: validate chunk len before actually using it Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 259/319] net: clear sk_err_soft in sk_clone_lock() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 260/319] net: mangle zero checksum in skb_checksum_help() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 261/319] dccp: do not send reset to already closed sockets Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 262/319] dccp: fix out of bound access in dccp_v4_err() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 263/319] sctp: assign assoc_id earlier in __sctp_connect Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 264/319] neigh: check error pointer instead of NULL for ipv4_neigh_lookup() Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 265/319] ipv4: use new_gw for redirect neigh lookup Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 266/319] mac80211: fix purging multicast PS buffer queue Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 267/319] mac80211: discard multicast and 4-addr A-MSDUs Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 268/319] cfg80211: limit scan results cache size Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 269/319] mwifiex: printk() overflow with 32-byte SSIDs Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 270/319] ipv4: Set skb->protocol properly for local output Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 271/319] net: sky2: Fix shutdown crash Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 272/319] kaweth: fix firmware download Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 273/319] tracing: Move mutex to protect against resetting of seq data Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 274/319] kernel/fork: fix CLONE_CHILD_CLEARTID regression in nscd Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 275/319] ipc: remove use of seq_printf return value Willy Tarreau
2017-02-05 19:49   ` Joe Perches
2017-02-05 20:35     ` Willy Tarreau
2017-02-06  8:06   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 276/319] arch: Introduce smp_load_acquire(), smp_store_release() Willy Tarreau
2017-02-06  8:06   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 277/319] kernel: Provide READ_ONCE and ASSIGN_ONCE Willy Tarreau
2017-02-06  8:06   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 278/319] kernel: Change ASSIGN_ONCE(val, x) to WRITE_ONCE(x, val) Willy Tarreau
2017-02-06  8:06   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 279/319] kernel: make READ_ONCE() valid on const arguments Willy Tarreau
2017-02-06  8:05   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 280/319] locking: Remove atomicy checks from {READ,WRITE}_ONCE Willy Tarreau
2017-02-06  8:05   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 281/319] compiler: Allow 1- and 2-byte smp_load_acquire() and smp_store_release() Willy Tarreau
2017-02-06  8:05   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 282/319] ipc/sem.c: fix complex_count vs. simple op race Willy Tarreau
2017-02-06  8:04   ` Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 283/319] cfq: fix starvation of asynchronous writes Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 284/319] drbd: Fix kernel_sendmsg() usage - potential NULL deref Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 285/319] lib/genalloc.c: start search from start of chunk Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 286/319] tools/vm/slabinfo: fix an unintentional printf Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 287/319] rcu: Fix soft lockup for rcu_nocb_kthread Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 288/319] ratelimit: fix bug in time interval by resetting right begin time Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 289/319] mfd: core: Fix device reference leak in mfd_clone_cell Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 290/319] PM / sleep: fix device reference leak in test_suspend Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 291/319] mmc: mxs: Initialize the spinlock prior to using it Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 292/319] mmc: block: don't use CMD23 with very old MMC cards Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 293/319] pstore/core: drop cmpxchg based updates Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 294/319] pstore/ram: Use memcpy_toio instead of memcpy Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 295/319] pstore/ram: Use memcpy_fromio() to save old buffer Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 296/319] mb86a20s: fix the locking logic Willy Tarreau
2017-02-05 19:21 ` [PATCH 3.10 297/319] mb86a20s: fix demod settings Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 298/319] cx231xx: don't return error on success Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 299/319] cx231xx: fix GPIOs for Pixelview SBTVD hybrid Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 300/319] gpio: mpc8xxx: Correct irq handler function Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 301/319] uio: fix dmem_region_start computation Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 302/319] KEYS: Fix short sprintf buffer in /proc/keys show function Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 303/319] hv: do not lose pending heartbeat vmbus packets Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 304/319] staging: iio: ad5933: avoid uninitialized variable in error case Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 305/319] mei: bus: fix received data size check in NFC fixup Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 306/319] ACPI / APEI: Fix incorrect return value of ghes_proc() Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 307/319] PCI: Handle read-only BARs on AMD CS553x devices Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 308/319] tile: avoid using clocksource_cyc2ns with absolute cycle count Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 309/319] dm flakey: fix reads to be issued if drop_writes configured Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 310/319] mm,ksm: fix endless looping in allocating memory when ksm enable Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 311/319] can: dev: fix deadlock reported after bus-off Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 312/319] hwmon: (adt7411) set bit 3 in CFG1 register Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 313/319] mpi: Fix NULL ptr dereference in mpi_powm() [ver #3] Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 314/319] mfd: 88pm80x: Double shifting bug in suspend/resume Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 315/319] ASoC: omap-mcpdm: Fix irq resource handling Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 316/319] regulator: tps65910: Work around silicon erratum SWCZ010 Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 317/319] dm: mark request_queue dead before destroying the DM device Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 318/319] fbdev/efifb: Fix 16 color palette entry calculation Willy Tarreau
2017-02-05 19:22 ` [PATCH 3.10 319/319] metag: Only define atomic_dec_if_positive conditionally Willy Tarreau

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=1486322541-8206-121-git-send-email-w@1wt.eu \
    --to=w@1wt.eu \
    --cc=davem@davemloft.net \
    --cc=dlstevens@us.ibm.com \
    --cc=fleitner@redhat.com \
    --cc=hannes@stressinduktion.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mmanning@brocade.com \
    --cc=stable@vger.kernel.org \
    --cc=yoshfuji@linux-ipv6.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®