stable.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: linux-kernel@vger.kernel.org
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	stable@vger.kernel.org, Al Viro <viro@zeniv.linux.org.uk>,
	Paul Moore <paul@paul-moore.com>,
	"David S. Miller" <davem@davemloft.net>,
	Sasha Levin <alexander.levin@microsoft.com>
Subject: [PATCH 4.9 080/130] ipv6: make ipv6_renew_options() interrupt/kernel safe
Date: Thu, 23 Aug 2018 09:53:16 +0200	[thread overview]
Message-ID: <20180823074932.438797295@linuxfoundation.org> (raw)
In-Reply-To: <20180823074927.161454870@linuxfoundation.org>

4.9-stable review patch.  If anyone has any objections, please let me know.

------------------

From: Paul Moore <paul@paul-moore.com>

[ Upstream commit a9ba23d48dbc6ffd08426bb10f05720e0b9f5c14 ]

At present the ipv6_renew_options_kern() function ends up calling into
access_ok() which is problematic if done from inside an interrupt as
access_ok() calls WARN_ON_IN_IRQ() on some (all?) architectures
(x86-64 is affected).  Example warning/backtrace is shown below:

 WARNING: CPU: 1 PID: 3144 at lib/usercopy.c:11 _copy_from_user+0x85/0x90
 ...
 Call Trace:
  <IRQ>
  ipv6_renew_option+0xb2/0xf0
  ipv6_renew_options+0x26a/0x340
  ipv6_renew_options_kern+0x2c/0x40
  calipso_req_setattr+0x72/0xe0
  netlbl_req_setattr+0x126/0x1b0
  selinux_netlbl_inet_conn_request+0x80/0x100
  selinux_inet_conn_request+0x6d/0xb0
  security_inet_conn_request+0x32/0x50
  tcp_conn_request+0x35f/0xe00
  ? __lock_acquire+0x250/0x16c0
  ? selinux_socket_sock_rcv_skb+0x1ae/0x210
  ? tcp_rcv_state_process+0x289/0x106b
  tcp_rcv_state_process+0x289/0x106b
  ? tcp_v6_do_rcv+0x1a7/0x3c0
  tcp_v6_do_rcv+0x1a7/0x3c0
  tcp_v6_rcv+0xc82/0xcf0
  ip6_input_finish+0x10d/0x690
  ip6_input+0x45/0x1e0
  ? ip6_rcv_finish+0x1d0/0x1d0
  ipv6_rcv+0x32b/0x880
  ? ip6_make_skb+0x1e0/0x1e0
  __netif_receive_skb_core+0x6f2/0xdf0
  ? process_backlog+0x85/0x250
  ? process_backlog+0x85/0x250
  ? process_backlog+0xec/0x250
  process_backlog+0xec/0x250
  net_rx_action+0x153/0x480
  __do_softirq+0xd9/0x4f7
  do_softirq_own_stack+0x2a/0x40
  </IRQ>
  ...

While not present in the backtrace, ipv6_renew_option() ends up calling
access_ok() via the following chain:

  access_ok()
  _copy_from_user()
  copy_from_user()
  ipv6_renew_option()

The fix presented in this patch is to perform the userspace copy
earlier in the call chain such that it is only called when the option
data is actually coming from userspace; that place is
do_ipv6_setsockopt().  Not only does this solve the problem seen in
the backtrace above, it also allows us to simplify the code quite a
bit by removing ipv6_renew_options_kern() completely.  We also take
this opportunity to cleanup ipv6_renew_options()/ipv6_renew_option()
a small amount as well.

This patch is heavily based on a rough patch by Al Viro.  I've taken
his original patch, converted a kmemdup() call in do_ipv6_setsockopt()
to a memdup_user() call, made better use of the e_inval jump target in
the same function, and cleaned up the use ipv6_renew_option() by
ipv6_renew_options().

CC: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 include/net/ipv6.h       |    9 ---
 net/ipv6/calipso.c       |    9 +--
 net/ipv6/exthdrs.c       |  111 ++++++++++++-----------------------------------
 net/ipv6/ipv6_sockglue.c |   27 ++++++++---
 4 files changed, 53 insertions(+), 103 deletions(-)

--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -312,14 +312,7 @@ struct ipv6_txoptions *ipv6_dup_options(
 struct ipv6_txoptions *ipv6_renew_options(struct sock *sk,
 					  struct ipv6_txoptions *opt,
 					  int newtype,
-					  struct ipv6_opt_hdr __user *newopt,
-					  int newoptlen);
-struct ipv6_txoptions *
-ipv6_renew_options_kern(struct sock *sk,
-			struct ipv6_txoptions *opt,
-			int newtype,
-			struct ipv6_opt_hdr *newopt,
-			int newoptlen);
+					  struct ipv6_opt_hdr *newopt);
 struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,
 					  struct ipv6_txoptions *opt);
 
--- a/net/ipv6/calipso.c
+++ b/net/ipv6/calipso.c
@@ -799,8 +799,7 @@ static int calipso_opt_update(struct soc
 {
 	struct ipv6_txoptions *old = txopt_get(inet6_sk(sk)), *txopts;
 
-	txopts = ipv6_renew_options_kern(sk, old, IPV6_HOPOPTS,
-					 hop, hop ? ipv6_optlen(hop) : 0);
+	txopts = ipv6_renew_options(sk, old, IPV6_HOPOPTS, hop);
 	txopt_put(old);
 	if (IS_ERR(txopts))
 		return PTR_ERR(txopts);
@@ -1222,8 +1221,7 @@ static int calipso_req_setattr(struct re
 	if (IS_ERR(new))
 		return PTR_ERR(new);
 
-	txopts = ipv6_renew_options_kern(sk, req_inet->ipv6_opt, IPV6_HOPOPTS,
-					 new, new ? ipv6_optlen(new) : 0);
+	txopts = ipv6_renew_options(sk, req_inet->ipv6_opt, IPV6_HOPOPTS, new);
 
 	kfree(new);
 
@@ -1260,8 +1258,7 @@ static void calipso_req_delattr(struct r
 	if (calipso_opt_del(req_inet->ipv6_opt->hopopt, &new))
 		return; /* Nothing to do */
 
-	txopts = ipv6_renew_options_kern(sk, req_inet->ipv6_opt, IPV6_HOPOPTS,
-					 new, new ? ipv6_optlen(new) : 0);
+	txopts = ipv6_renew_options(sk, req_inet->ipv6_opt, IPV6_HOPOPTS, new);
 
 	if (!IS_ERR(txopts)) {
 		txopts = xchg(&req_inet->ipv6_opt, txopts);
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -760,29 +760,21 @@ ipv6_dup_options(struct sock *sk, struct
 }
 EXPORT_SYMBOL_GPL(ipv6_dup_options);
 
-static int ipv6_renew_option(void *ohdr,
-			     struct ipv6_opt_hdr __user *newopt, int newoptlen,
-			     int inherit,
-			     struct ipv6_opt_hdr **hdr,
-			     char **p)
+static void ipv6_renew_option(int renewtype,
+			      struct ipv6_opt_hdr **dest,
+			      struct ipv6_opt_hdr *old,
+			      struct ipv6_opt_hdr *new,
+			      int newtype, char **p)
 {
-	if (inherit) {
-		if (ohdr) {
-			memcpy(*p, ohdr, ipv6_optlen((struct ipv6_opt_hdr *)ohdr));
-			*hdr = (struct ipv6_opt_hdr *)*p;
-			*p += CMSG_ALIGN(ipv6_optlen(*hdr));
-		}
-	} else {
-		if (newopt) {
-			if (copy_from_user(*p, newopt, newoptlen))
-				return -EFAULT;
-			*hdr = (struct ipv6_opt_hdr *)*p;
-			if (ipv6_optlen(*hdr) > newoptlen)
-				return -EINVAL;
-			*p += CMSG_ALIGN(newoptlen);
-		}
-	}
-	return 0;
+	struct ipv6_opt_hdr *src;
+
+	src = (renewtype == newtype ? new : old);
+	if (!src)
+		return;
+
+	memcpy(*p, src, ipv6_optlen(src));
+	*dest = (struct ipv6_opt_hdr *)*p;
+	*p += CMSG_ALIGN(ipv6_optlen(*dest));
 }
 
 /**
@@ -808,13 +800,11 @@ static int ipv6_renew_option(void *ohdr,
  */
 struct ipv6_txoptions *
 ipv6_renew_options(struct sock *sk, struct ipv6_txoptions *opt,
-		   int newtype,
-		   struct ipv6_opt_hdr __user *newopt, int newoptlen)
+		   int newtype, struct ipv6_opt_hdr *newopt)
 {
 	int tot_len = 0;
 	char *p;
 	struct ipv6_txoptions *opt2;
-	int err;
 
 	if (opt) {
 		if (newtype != IPV6_HOPOPTS && opt->hopopt)
@@ -827,8 +817,8 @@ ipv6_renew_options(struct sock *sk, stru
 			tot_len += CMSG_ALIGN(ipv6_optlen(opt->dst1opt));
 	}
 
-	if (newopt && newoptlen)
-		tot_len += CMSG_ALIGN(newoptlen);
+	if (newopt)
+		tot_len += CMSG_ALIGN(ipv6_optlen(newopt));
 
 	if (!tot_len)
 		return NULL;
@@ -843,29 +833,19 @@ ipv6_renew_options(struct sock *sk, stru
 	opt2->tot_len = tot_len;
 	p = (char *)(opt2 + 1);
 
-	err = ipv6_renew_option(opt ? opt->hopopt : NULL, newopt, newoptlen,
-				newtype != IPV6_HOPOPTS,
-				&opt2->hopopt, &p);
-	if (err)
-		goto out;
-
-	err = ipv6_renew_option(opt ? opt->dst0opt : NULL, newopt, newoptlen,
-				newtype != IPV6_RTHDRDSTOPTS,
-				&opt2->dst0opt, &p);
-	if (err)
-		goto out;
-
-	err = ipv6_renew_option(opt ? opt->srcrt : NULL, newopt, newoptlen,
-				newtype != IPV6_RTHDR,
-				(struct ipv6_opt_hdr **)&opt2->srcrt, &p);
-	if (err)
-		goto out;
-
-	err = ipv6_renew_option(opt ? opt->dst1opt : NULL, newopt, newoptlen,
-				newtype != IPV6_DSTOPTS,
-				&opt2->dst1opt, &p);
-	if (err)
-		goto out;
+	ipv6_renew_option(IPV6_HOPOPTS, &opt2->hopopt,
+			  (opt ? opt->hopopt : NULL),
+			  newopt, newtype, &p);
+	ipv6_renew_option(IPV6_RTHDRDSTOPTS, &opt2->dst0opt,
+			  (opt ? opt->dst0opt : NULL),
+			  newopt, newtype, &p);
+	ipv6_renew_option(IPV6_RTHDR,
+			  (struct ipv6_opt_hdr **)&opt2->srcrt,
+			  (opt ? (struct ipv6_opt_hdr *)opt->srcrt : NULL),
+			  newopt, newtype, &p);
+	ipv6_renew_option(IPV6_DSTOPTS, &opt2->dst1opt,
+			  (opt ? opt->dst1opt : NULL),
+			  newopt, newtype, &p);
 
 	opt2->opt_nflen = (opt2->hopopt ? ipv6_optlen(opt2->hopopt) : 0) +
 			  (opt2->dst0opt ? ipv6_optlen(opt2->dst0opt) : 0) +
@@ -873,37 +853,6 @@ ipv6_renew_options(struct sock *sk, stru
 	opt2->opt_flen = (opt2->dst1opt ? ipv6_optlen(opt2->dst1opt) : 0);
 
 	return opt2;
-out:
-	sock_kfree_s(sk, opt2, opt2->tot_len);
-	return ERR_PTR(err);
-}
-
-/**
- * ipv6_renew_options_kern - replace a specific ext hdr with a new one.
- *
- * @sk: sock from which to allocate memory
- * @opt: original options
- * @newtype: option type to replace in @opt
- * @newopt: new option of type @newtype to replace (kernel-mem)
- * @newoptlen: length of @newopt
- *
- * See ipv6_renew_options().  The difference is that @newopt is
- * kernel memory, rather than user memory.
- */
-struct ipv6_txoptions *
-ipv6_renew_options_kern(struct sock *sk, struct ipv6_txoptions *opt,
-			int newtype, struct ipv6_opt_hdr *newopt,
-			int newoptlen)
-{
-	struct ipv6_txoptions *ret_val;
-	const mm_segment_t old_fs = get_fs();
-
-	set_fs(KERNEL_DS);
-	ret_val = ipv6_renew_options(sk, opt, newtype,
-				     (struct ipv6_opt_hdr __user *)newopt,
-				     newoptlen);
-	set_fs(old_fs);
-	return ret_val;
 }
 
 struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -390,6 +390,12 @@ static int do_ipv6_setsockopt(struct soc
 	case IPV6_DSTOPTS:
 	{
 		struct ipv6_txoptions *opt;
+		struct ipv6_opt_hdr *new = NULL;
+
+		/* hop-by-hop / destination options are privileged option */
+		retv = -EPERM;
+		if (optname != IPV6_RTHDR && !ns_capable(net->user_ns, CAP_NET_RAW))
+			break;
 
 		/* remove any sticky options header with a zero option
 		 * length, per RFC3542.
@@ -401,17 +407,22 @@ static int do_ipv6_setsockopt(struct soc
 		else if (optlen < sizeof(struct ipv6_opt_hdr) ||
 			 optlen & 0x7 || optlen > 8 * 255)
 			goto e_inval;
-
-		/* hop-by-hop / destination options are privileged option */
-		retv = -EPERM;
-		if (optname != IPV6_RTHDR && !ns_capable(net->user_ns, CAP_NET_RAW))
-			break;
+		else {
+			new = memdup_user(optval, optlen);
+			if (IS_ERR(new)) {
+				retv = PTR_ERR(new);
+				break;
+			}
+			if (unlikely(ipv6_optlen(new) > optlen)) {
+				kfree(new);
+				goto e_inval;
+			}
+		}
 
 		opt = rcu_dereference_protected(np->opt,
 						lockdep_sock_is_held(sk));
-		opt = ipv6_renew_options(sk, opt, optname,
-					 (struct ipv6_opt_hdr __user *)optval,
-					 optlen);
+		opt = ipv6_renew_options(sk, opt, optname, new);
+		kfree(new);
 		if (IS_ERR(opt)) {
 			retv = PTR_ERR(opt);
 			break;

  parent reply	other threads:[~2018-08-23  7:53 UTC|newest]

Thread overview: 130+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-23  7:51 [PATCH 4.9 000/130] 4.9.124-stable review Greg Kroah-Hartman
2018-08-23  7:51 ` [PATCH 4.9 001/130] x86/entry/64: Remove %ebx handling from error_entry/exit Greg Kroah-Hartman
2018-08-23  7:51 ` [PATCH 4.9 002/130] ARC: Explicitly add -mmedium-calls to CFLAGS Greg Kroah-Hartman
2018-08-23  7:51 ` [PATCH 4.9 003/130] usb: dwc3: of-simple: fix use-after-free on remove Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 004/130] netfilter: ipv6: nf_defrag: reduce struct net memory waste Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 005/130] selftests: pstore: return Kselftest Skip code for skipped tests Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 006/130] selftests: static_keys: " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 007/130] selftests: user: " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 008/130] selftests: zram: " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 009/130] selftests: sync: add config fragment for testing sync framework Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 010/130] ARM: dts: NSP: Fix i2c controller interrupt type Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 011/130] ARM: dts: NSP: Fix PCIe controllers interrupt types Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 012/130] ARM: dts: Cygnus: Fix I2C controller interrupt type Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 013/130] ARM: dts: Cygnus: Fix PCIe " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 014/130] arm64: dts: ns2: Fix I2C " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 016/130] IB/rxe: Fix missing completion for mem_reg work requests Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 017/130] libahci: Fix possible Spectre-v1 pmp indexing in ahci_led_store() Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 018/130] usb: dwc2: fix isoc split in transfer with no data Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 019/130] usb: gadget: composite: fix delayed_status race condition when set_interface Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 020/130] usb: gadget: dwc2: fix memory leak in gadget_init() Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 021/130] xen: add error handling for xenbus_printf Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 022/130] scsi: xen-scsifront: " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 023/130] xen/scsiback: " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 024/130] arm64: make secondary_start_kernel() notrace Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 025/130] qed: Add sanity check for SIMD fastpath handler Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 026/130] enic: initialize enic->rfs_h.lock in enic_probe Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 027/130] net: hamradio: use eth_broadcast_addr Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 028/130] net: propagate dev_get_valid_name return code Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 029/130] net: stmmac: socfpga: add additional ocp reset line for Stratix10 Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 030/130] nvmet: reset keep alive timer in controller enable Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 031/130] ARC: Enable machine_desc->init_per_cpu for !CONFIG_SMP Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 032/130] net: davinci_emac: match the mdio device against its compatible if possible Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 033/130] KVM: arm/arm64: Drop resource size check for GICV window Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 034/130] locking/lockdep: Do not record IRQ state within lockdep code Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 035/130] ipv6: mcast: fix unsolicited report interval after receiving querys Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 036/130] Smack: Mark inode instant in smack_task_to_inode Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 037/130] batman-adv: Fix bat_ogm_iv best gw refcnt after netlink dump Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 038/130] batman-adv: Fix bat_v " Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 039/130] cxgb4: when disabling dcb set txq dcb priority to 0 Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 040/130] iio: pressure: bmp280: fix relative humidity unit Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 041/130] brcmfmac: stop watchdog before detach and free everything Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 042/130] ARM: dts: am437x: make edt-ft5x06 a wakeup source Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 043/130] ALSA: seq: Fix UBSAN warning at SNDRV_SEQ_IOCTL_QUERY_NEXT_CLIENT ioctl Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 044/130] usb: xhci: remove the code build warning Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 045/130] usb: xhci: increase CRS timeout value Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 046/130] NFC: pn533: Fix wrong GFP flag usage Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 047/130] perf test session topology: Fix test on s390 Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 048/130] perf report powerpc: Fix crash if callchain is empty Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 049/130] perf bench: Fix numa report output code Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 050/130] netfilter: nf_log: fix uninit read in nf_log_proc_dostring Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 051/130] ceph: fix dentry leak in splice_dentry() Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 052/130] selftests/x86/sigreturn/64: Fix spurious failures on AMD CPUs Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 053/130] selftests/x86/sigreturn: Do minor cleanups Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 054/130] ARM: dts: da850: Fix interrups property for gpio Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 055/130] dmaengine: pl330: report BURST residue granularity Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 056/130] dmaengine: k3dma: Off by one in k3_of_dma_simple_xlate() Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 057/130] md/raid10: fix that replacement cannot complete recovery after reassemble Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 058/130] nl80211: relax ht operation checks for mesh Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 059/130] drm/exynos: gsc: Fix support for NV16/61, YUV420/YVU420 and YUV422 modes Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 060/130] drm/exynos: decon5433: Fix per-plane global alpha for XRGB modes Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 061/130] drm/exynos: decon5433: Fix WINCONx reset value Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 062/130] bpf, s390: fix potential memleak when later bpf_jit_prog fails Greg Kroah-Hartman
2018-08-23  7:52 ` [PATCH 4.9 063/130] PCI: xilinx: Add missing of_node_put() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 064/130] PCI: xilinx-nwl: " Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 065/130] bnx2x: Fix receiving tx-timeout in error or recovery state Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 066/130] acpi/nfit: fix cmd_rc for acpi_nfit_ctl to always return a value Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 068/130] objtool: Support GCC 8 -fnoreorder-functions Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 069/130] ipvlan: call dev_change_flags when ipvlan mode is reset Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 070/130] HID: wacom: Correct touch maximum XY of 2nd-gen Intuos Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 071/130] ARM: imx_v6_v7_defconfig: Select ULPI support Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 072/130] ARM: imx_v4_v5_defconfig: " Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 074/130] kasan: fix shadow_size calculation error in kasan_module_alloc Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 075/130] smsc75xx: Add workaround for gigabit link up hardware errata Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 076/130] samples/bpf: add missing <linux/if_vlan.h> Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 077/130] samples/bpf: Check the error of write() and read() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 078/130] ieee802154: 6lowpan: set IFLA_LINK Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 079/130] netfilter: x_tables: set module owner for icmp(6) matches Greg Kroah-Hartman
2018-08-23  7:53 ` Greg Kroah-Hartman [this message]
2018-08-23  7:53 ` [PATCH 4.9 081/130] net: qrtr: Broadcast messages only from control port Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 082/130] sh_eth: fix invalid context bug while calling auto-negotiation by ethtool Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 083/130] sh_eth: fix invalid context bug while changing link options " Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 084/130] ravb: fix invalid context bug while calling auto-negotiation " Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 085/130] ravb: fix invalid context bug while changing link options " Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 086/130] ARM: pxa: irq: fix handling of ICMR registers in suspend/resume Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 087/130] net/sched: act_tunnel_key: fix NULL dereference when goto chain is used Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 088/130] ieee802154: at86rf230: switch from BUG_ON() to WARN_ON() on problem Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 089/130] ieee802154: at86rf230: use __func__ macro for debug messages Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 090/130] ieee802154: fakelb: switch from BUG_ON() to WARN_ON() on problem Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 091/130] drm/armada: fix colorkey mode property Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 092/130] netfilter: nf_conntrack: Fix possible possible crash on module loading Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 093/130] ARC: Improve cmpxchg syscall implementation Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 094/130] bnxt_en: Always set output parameters in bnxt_get_max_rings() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 095/130] bnxt_en: Fix for system hang if request_irq fails Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 096/130] perf llvm-utils: Remove bashism from kernel include fetch script Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 097/130] nfit: fix unchecked dereference in acpi_nfit_ctl Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 098/130] RDMA/mlx5: Fix memory leak in mlx5_ib_create_srq() error path Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 099/130] ARM: 8780/1: ftrace: Only set kernel memory back to read-only after boot Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 100/130] ARM: DRA7/OMAP5: Enable ACTLR[0] (Enable invalidates of BTB) for secondary cores Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 101/130] ARM: dts: am3517.dtsi: Disable reference to OMAP3 OTG controller Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 102/130] ixgbe: Be more careful when modifying MAC filters Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 103/130] tools: build: Use HOSTLDFLAGS with fixdep Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 104/130] packet: reset network header if packet shorter than ll reserved space Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 105/130] qlogic: check kstrtoul() for errors Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 106/130] tcp: remove DELAYED ACK events in DCTCP Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 107/130] pinctrl: nsp: off by ones in nsp_pinmux_enable() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 108/130] pinctrl: nsp: Fix potential NULL dereference Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 109/130] drm/nouveau/gem: off by one bugs in nouveau_gem_pushbuf_reloc_apply() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 110/130] net/ethernet/freescale/fman: fix cross-build error Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 111/130] net: usb: rtl8150: demote allmulti message to dev_dbg() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 112/130] PCI: versatile: Fix I/O space page leak Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 113/130] net: qca_spi: Avoid packet drop during initial sync Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 114/130] net: qca_spi: Make sure the QCA7000 reset is triggered Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 115/130] net: qca_spi: Fix log level if probe fails Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 117/130] KVM: irqfd: fix race between EPOLLHUP and irq_bypass_register_consumer Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 118/130] ext4: fix spectre gadget in ext4_mb_regular_allocator() Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 120/130] xfrm_user: prevent leaking 2 bytes of kernel memory Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 121/130] netfilter: conntrack: dccp: treat SYNC/SYNCACK as invalid if no prior state Greg Kroah-Hartman
2018-08-23  7:53 ` [PATCH 4.9 122/130] packet: refine ring v3 block size test to hold one frame Greg Kroah-Hartman
2018-08-23  7:54 ` [PATCH 4.9 124/130] PCI: OF: Fix I/O space page leak Greg Kroah-Hartman
2018-08-23 11:08   ` Sergei Shtylyov
2018-08-23  7:54 ` [PATCH 4.9 125/130] PCI: hotplug: Dont leak pci_slot on registration failure Greg Kroah-Hartman
2018-08-23  7:54 ` [PATCH 4.9 126/130] PCI: Skip MPS logic for Virtual Functions (VFs) Greg Kroah-Hartman
2018-08-23  7:54 ` [PATCH 4.9 127/130] PCI: pciehp: Fix use-after-free on unplug Greg Kroah-Hartman
2018-08-23  7:54 ` [PATCH 4.9 128/130] PCI: pciehp: Fix unprotected list iteration in IRQ handler Greg Kroah-Hartman
2018-08-23  7:54 ` [PATCH 4.9 130/130] reiserfs: fix broken xattr handling (heap corruption, bad retval) Greg Kroah-Hartman
2018-08-23 18:09 ` [PATCH 4.9 000/130] 4.9.124-stable review Nathan Chancellor
2018-08-23 20:50   ` Greg Kroah-Hartman
2018-08-23 19:18 ` Shuah Khan
2018-08-23 20:11 ` Guenter Roeck
2018-08-24  5:26 ` Naresh Kamboju

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=20180823074932.438797295@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=alexander.levin@microsoft.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=stable@vger.kernel.org \
    --cc=viro@zeniv.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).