mirror of https://lore.kernel.org/lkml/
 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, Cong Wang <xiyou.wangcong@gmail.com>,
	Paul Moore <paul@paul-moore.com>
Subject: [PATCH 4.11 147/150] audit: fix the RCU locking for the auditd_connection structure
Date: Mon, 12 Jun 2017 17:25:54 +0200	[thread overview]
Message-ID: <20170612152526.230286110@linuxfoundation.org> (raw)
In-Reply-To: <20170612152519.404936272@linuxfoundation.org>

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

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

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

commit 48d0e023af9799cd7220335baf8e3ba61eeafbeb upstream.

Cong Wang correctly pointed out that the RCU read locking of the
auditd_connection struct was wrong, this patch correct this by
adopting a more traditional, and correct RCU locking model.

This patch is heavily based on an earlier prototype by Cong Wang.

Reported-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: Paul Moore <paul@paul-moore.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>


---
 kernel/audit.c |  167 +++++++++++++++++++++++++++++++++++++++------------------
 1 file changed, 115 insertions(+), 52 deletions(-)

--- a/kernel/audit.c
+++ b/kernel/audit.c
@@ -110,18 +110,19 @@ struct audit_net {
  * @pid: auditd PID
  * @portid: netlink portid
  * @net: the associated network namespace
- * @lock: spinlock to protect write access
+ * @rcu: RCU head
  *
  * Description:
  * This struct is RCU protected; you must either hold the RCU lock for reading
- * or the included spinlock for writing.
+ * or the associated spinlock for writing.
  */
 static struct auditd_connection {
 	int pid;
 	u32 portid;
 	struct net *net;
-	spinlock_t lock;
-} auditd_conn;
+	struct rcu_head rcu;
+} *auditd_conn = NULL;
+static DEFINE_SPINLOCK(auditd_conn_lock);
 
 /* If audit_rate_limit is non-zero, limit the rate of sending audit records
  * to that number per second.  This prevents DoS attacks, but results in
@@ -223,15 +224,39 @@ struct audit_reply {
 int auditd_test_task(const struct task_struct *task)
 {
 	int rc;
+	struct auditd_connection *ac;
 
 	rcu_read_lock();
-	rc = (auditd_conn.pid && task->tgid == auditd_conn.pid ? 1 : 0);
+	ac = rcu_dereference(auditd_conn);
+	rc = (ac && ac->pid == task->tgid ? 1 : 0);
 	rcu_read_unlock();
 
 	return rc;
 }
 
 /**
+ * auditd_pid_vnr - Return the auditd PID relative to the namespace
+ *
+ * Description:
+ * Returns the PID in relation to the namespace, 0 on failure.
+ */
+static pid_t auditd_pid_vnr(void)
+{
+	pid_t pid;
+	const struct auditd_connection *ac;
+
+	rcu_read_lock();
+	ac = rcu_dereference(auditd_conn);
+	if (!ac)
+		pid = 0;
+	else
+		pid = ac->pid;
+	rcu_read_unlock();
+
+	return pid;
+}
+
+/**
  * audit_get_sk - Return the audit socket for the given network namespace
  * @net: the destination network namespace
  *
@@ -427,6 +452,23 @@ static int audit_set_failure(u32 state)
 }
 
 /**
+ * auditd_conn_free - RCU helper to release an auditd connection struct
+ * @rcu: RCU head
+ *
+ * Description:
+ * Drop any references inside the auditd connection tracking struct and free
+ * the memory.
+ */
+static void auditd_conn_free(struct rcu_head *rcu)
+{
+	struct auditd_connection *ac;
+
+	ac = container_of(rcu, struct auditd_connection, rcu);
+	put_net(ac->net);
+	kfree(ac);
+}
+
+/**
  * auditd_set - Set/Reset the auditd connection state
  * @pid: auditd PID
  * @portid: auditd netlink portid
@@ -434,22 +476,33 @@ static int audit_set_failure(u32 state)
  *
  * Description:
  * This function will obtain and drop network namespace references as
- * necessary.
+ * necessary.  Returns zero on success, negative values on failure.
  */
-static void auditd_set(int pid, u32 portid, struct net *net)
+static int auditd_set(int pid, u32 portid, struct net *net)
 {
 	unsigned long flags;
+	struct auditd_connection *ac_old, *ac_new;
 
-	spin_lock_irqsave(&auditd_conn.lock, flags);
-	auditd_conn.pid = pid;
-	auditd_conn.portid = portid;
-	if (auditd_conn.net)
-		put_net(auditd_conn.net);
-	if (net)
-		auditd_conn.net = get_net(net);
-	else
-		auditd_conn.net = NULL;
-	spin_unlock_irqrestore(&auditd_conn.lock, flags);
+	if (!pid || !net)
+		return -EINVAL;
+
+	ac_new = kzalloc(sizeof(*ac_new), GFP_KERNEL);
+	if (!ac_new)
+		return -ENOMEM;
+	ac_new->pid = pid;
+	ac_new->portid = portid;
+	ac_new->net = get_net(net);
+
+	spin_lock_irqsave(&auditd_conn_lock, flags);
+	ac_old = rcu_dereference_protected(auditd_conn,
+					   lockdep_is_held(&auditd_conn_lock));
+	rcu_assign_pointer(auditd_conn, ac_new);
+	spin_unlock_irqrestore(&auditd_conn_lock, flags);
+
+	if (ac_old)
+		call_rcu(&ac_old->rcu, auditd_conn_free);
+
+	return 0;
 }
 
 /**
@@ -544,13 +597,19 @@ static void kauditd_retry_skb(struct sk_
  */
 static void auditd_reset(void)
 {
+	unsigned long flags;
 	struct sk_buff *skb;
+	struct auditd_connection *ac_old;
 
 	/* if it isn't already broken, break the connection */
-	rcu_read_lock();
-	if (auditd_conn.pid)
-		auditd_set(0, 0, NULL);
-	rcu_read_unlock();
+	spin_lock_irqsave(&auditd_conn_lock, flags);
+	ac_old = rcu_dereference_protected(auditd_conn,
+					   lockdep_is_held(&auditd_conn_lock));
+	rcu_assign_pointer(auditd_conn, NULL);
+	spin_unlock_irqrestore(&auditd_conn_lock, flags);
+
+	if (ac_old)
+		call_rcu(&ac_old->rcu, auditd_conn_free);
 
 	/* flush all of the main and retry queues to the hold queue */
 	while ((skb = skb_dequeue(&audit_retry_queue)))
@@ -576,6 +635,7 @@ static int auditd_send_unicast_skb(struc
 	u32 portid;
 	struct net *net;
 	struct sock *sk;
+	struct auditd_connection *ac;
 
 	/* NOTE: we can't call netlink_unicast while in the RCU section so
 	 *       take a reference to the network namespace and grab local
@@ -585,15 +645,15 @@ static int auditd_send_unicast_skb(struc
 	 *       section netlink_unicast() should safely return an error */
 
 	rcu_read_lock();
-	if (!auditd_conn.pid) {
+	ac = rcu_dereference(auditd_conn);
+	if (!ac) {
 		rcu_read_unlock();
 		rc = -ECONNREFUSED;
 		goto err;
 	}
-	net = auditd_conn.net;
-	get_net(net);
+	net = get_net(ac->net);
 	sk = audit_get_sk(net);
-	portid = auditd_conn.portid;
+	portid = ac->portid;
 	rcu_read_unlock();
 
 	rc = netlink_unicast(sk, skb, portid, 0);
@@ -728,6 +788,7 @@ static int kauditd_thread(void *dummy)
 	u32 portid = 0;
 	struct net *net = NULL;
 	struct sock *sk = NULL;
+	struct auditd_connection *ac;
 
 #define UNICAST_RETRIES 5
 
@@ -735,14 +796,14 @@ static int kauditd_thread(void *dummy)
 	while (!kthread_should_stop()) {
 		/* NOTE: see the lock comments in auditd_send_unicast_skb() */
 		rcu_read_lock();
-		if (!auditd_conn.pid) {
+		ac = rcu_dereference(auditd_conn);
+		if (!ac) {
 			rcu_read_unlock();
 			goto main_queue;
 		}
-		net = auditd_conn.net;
-		get_net(net);
+		net = get_net(ac->net);
 		sk = audit_get_sk(net);
-		portid = auditd_conn.portid;
+		portid = ac->portid;
 		rcu_read_unlock();
 
 		/* attempt to flush the hold queue */
@@ -1102,9 +1163,7 @@ static int audit_receive_msg(struct sk_b
 		memset(&s, 0, sizeof(s));
 		s.enabled		= audit_enabled;
 		s.failure		= audit_failure;
-		rcu_read_lock();
-		s.pid			= auditd_conn.pid;
-		rcu_read_unlock();
+		s.pid			= auditd_pid_vnr();
 		s.rate_limit		= audit_rate_limit;
 		s.backlog_limit		= audit_backlog_limit;
 		s.lost			= atomic_read(&audit_lost);
@@ -1143,38 +1202,44 @@ static int audit_receive_msg(struct sk_b
 			/* test the auditd connection */
 			audit_replace(requesting_pid);
 
-			rcu_read_lock();
-			auditd_pid = auditd_conn.pid;
+			auditd_pid = auditd_pid_vnr();
 			/* only the current auditd can unregister itself */
 			if ((!new_pid) && (requesting_pid != auditd_pid)) {
-				rcu_read_unlock();
 				audit_log_config_change("audit_pid", new_pid,
 							auditd_pid, 0);
 				return -EACCES;
 			}
 			/* replacing a healthy auditd is not allowed */
 			if (auditd_pid && new_pid) {
-				rcu_read_unlock();
 				audit_log_config_change("audit_pid", new_pid,
 							auditd_pid, 0);
 				return -EEXIST;
 			}
-			rcu_read_unlock();
-
-			if (audit_enabled != AUDIT_OFF)
-				audit_log_config_change("audit_pid", new_pid,
-							auditd_pid, 1);
 
 			if (new_pid) {
 				/* register a new auditd connection */
-				auditd_set(new_pid,
-					   NETLINK_CB(skb).portid,
-					   sock_net(NETLINK_CB(skb).sk));
+				err = auditd_set(new_pid,
+						 NETLINK_CB(skb).portid,
+						 sock_net(NETLINK_CB(skb).sk));
+				if (audit_enabled != AUDIT_OFF)
+					audit_log_config_change("audit_pid",
+								new_pid,
+								auditd_pid,
+								err ? 0 : 1);
+				if (err)
+					return err;
+
 				/* try to process any backlog */
 				wake_up_interruptible(&kauditd_wait);
-			} else
+			} else {
+				if (audit_enabled != AUDIT_OFF)
+					audit_log_config_change("audit_pid",
+								new_pid,
+								auditd_pid, 1);
+
 				/* unregister the auditd connection */
 				auditd_reset();
+			}
 		}
 		if (s.mask & AUDIT_STATUS_RATE_LIMIT) {
 			err = audit_set_rate_limit(s.rate_limit);
@@ -1447,10 +1512,11 @@ static void __net_exit audit_net_exit(st
 {
 	struct audit_net *aunet = net_generic(net, audit_net_id);
 
-	rcu_read_lock();
-	if (net == auditd_conn.net)
-		auditd_reset();
-	rcu_read_unlock();
+	/* NOTE: you would think that we would want to check the auditd
+	 * connection and potentially reset it here if it lives in this
+	 * namespace, but since the auditd connection tracking struct holds a
+	 * reference to this namespace (see auditd_set()) we are only ever
+	 * going to get here after that connection has been released */
 
 	netlink_kernel_release(aunet->sk);
 }
@@ -1470,9 +1536,6 @@ static int __init audit_init(void)
 	if (audit_initialized == AUDIT_DISABLED)
 		return 0;
 
-	memset(&auditd_conn, 0, sizeof(auditd_conn));
-	spin_lock_init(&auditd_conn.lock);
-
 	skb_queue_head_init(&audit_queue);
 	skb_queue_head_init(&audit_retry_queue);
 	skb_queue_head_init(&audit_hold_queue);

  parent reply	other threads:[~2017-06-12 15:33 UTC|newest]

Thread overview: 152+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-06-12 15:23 [PATCH 4.11 000/150] 4.11.5-stable review Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 001/150] bnx2x: Fix Multi-Cos Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 002/150] net: bridge: start hello timer only if device is up Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 003/150] vxlan: eliminate cached dst leak Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 004/150] net: systemport: Fix missing Wake-on-LAN interrupt for SYSTEMPORT Lite Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 005/150] ipv6: xfrm: Handle errors reported by xfrm6_find_1stfragopt() Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 006/150] cxgb4: avoid enabling napi twice to the same queue Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 007/150] tcp: disallow cwnd undo when switching congestion control Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 008/150] vxlan: fix use-after-free on deletion Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 009/150] ip6_tunnel: fix traffic class routing for tunnels Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 010/150] sock: reset sk_err when the error queue is empty Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 011/150] geneve: fix needed_headroom and max_mtu for collect_metadata Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 012/150] ipv6: Fix leak in ipv6_gso_segment() Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 013/150] net: dsa: Fix stale cpu_switch reference after unbind then bind Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 014/150] net: ping: do not abuse udp_poll() Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 015/150] net/ipv6: Fix CALIPSO causing GPF with datagram support Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 016/150] ravb: Fix use-after-free on `ifconfig eth0 down` Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 017/150] net: bridge: fix a null pointer dereference in br_afspec Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 018/150] net: ethoc: enable NAPI before poll may be scheduled Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 019/150] net: stmmac: fix completely hung TX when using TSO Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 020/150] sparc64: Add __multi3 for gcc 7.x and later Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 021/150] sparc64: mm: fix copy_tsb to correctly copy huge page TSBs Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 022/150] sparc: Machine description indices can vary Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 023/150] sparc/mm/hugepages: Fix setup_hugepagesz for invalid values Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 024/150] sparc64: reset mm cpumask after wrap Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 025/150] sparc64: combine activate_mm and switch_mm Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 026/150] sparc64: redefine first version Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 027/150] sparc64: add per-cpu mm of secondary contexts Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 028/150] sparc64: new context wrap Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 029/150] sparc64: delete old wrap code Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 030/150] arch/sparc: support NR_CPUS = 4096 Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 031/150] ftrace: Fix memory leak in ftrace_graph_release() Greg Kroah-Hartman
2017-06-12 15:23 ` [PATCH 4.11 032/150] serial: exar: Fix stuck MSIs Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 033/150] serial: ifx6x60: fix use-after-free on module unload Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 034/150] serial: core: fix crash in uart_suspend_port Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 035/150] ptrace: Properly initialize ptracer_cred on fork Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 036/150] ARM: dts: keystone-k2l: fix broken Ethernet due to disabled OSR Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 037/150] crypto: asymmetric_keys - handle EBUSY due to backlog correctly Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 038/150] KEYS: fix dereferencing NULL payload with nonzero length Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 039/150] KEYS: fix freeing uninitialized memory in key_update() Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 040/150] KEYS: encrypted: avoid encrypting/decrypting stack buffers Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 041/150] crypto: drbg - wait for crypto op not signal safe Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 042/150] crypto: gcm " Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 043/150] ovl: fix creds leak in copy up error path Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 044/150] kthread: Fix use-after-free if kthread fork fails Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 046/150] nfsd4: fix null dereference on replay Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 047/150] gfs2: Make flush bios explicitely sync Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 048/150] efi: Dont issue error message when booted under Xen Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 049/150] efi/bgrt: Skip efi_bgrt_init() in case of non-EFI boot Greg Kroah-Hartman
2017-06-14 23:34   ` Maniaxx
2017-06-15  7:17     ` Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 052/150] arm64: KVM: Preserve RES1 bits in SCTLR_EL2 Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 053/150] arm64: KVM: Allow unaligned accesses at EL2 Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 054/150] arm: KVM: Allow unaligned accesses at HYP Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 056/150] dmaengine: usb-dmac: Fix DMAOR AE bit definition Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 057/150] dmaengine: ep93xx: Always start from BASE0 Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 058/150] dmaengine: ep93xx: Dont drain the transfers in terminate_all() Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 059/150] dmaengine: mv_xor_v2: handle mv_xor_v2_prep_sw_desc() error properly Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 060/150] dmaengine: mv_xor_v2: properly handle wrapping in the array of HW descriptors Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 061/150] dmaengine: mv_xor_v2: do not use descriptors not acked by async_tx Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 062/150] dmaengine: mv_xor_v2: enable XOR engine after its configuration Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 063/150] dmaengine: mv_xor_v2: fix tx_submit() implementation Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 064/150] dmaengine: mv_xor_v2: remove interrupt coalescing Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 065/150] dmaengine: mv_xor_v2: set DMA mask to 40 bits Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 066/150] cfq-iosched: fix the delay of cfq_groups vdisktime under iops mode Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 067/150] reiserfs: Make flush bios explicitely sync Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 068/150] mtd: nand: tango: Export OF device ID table as module aliases Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 069/150] mtd: nand: tango: Update ecc_stats.corrected Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 070/150] xen/privcmd: Support correctly 64KB page granularity when mapping memory Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 071/150] ext4: fix SEEK_HOLE Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 072/150] ext4: keep existing extra fields when inode expands Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 073/150] ext4: fix data corruption with EXT4_GET_BLOCKS_ZERO Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 074/150] ext4: fix fdatasync(2) after extent manipulation operations Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 076/150] usb: gadget: f_mass_storage: Serialize wake and sleep execution Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 077/150] usb: musb: dsps: keep VBUS on for host-only mode Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 078/150] usb: chipidea: imx: Do not access CLKONOFF on i.MX51 Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 079/150] usb: chipidea: udc: fix NULL pointer dereference if udc_start failed Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 080/150] usb: chipidea: debug: check before accessing ci_role Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 081/150] staging/lustre/lov: remove set_fs() call from lov_getstripe() Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 082/150] iio: adc: bcm_iproc_adc: swap primary and secondary isr handlers Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 083/150] iio: light: ltr501 Fix interchanged als/ps register field Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 084/150] iio: trigger: fix NULL pointer dereference in iio_trigger_write_current() Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 085/150] iio: proximity: as3935: fix AS3935_INT mask Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 086/150] iio: proximity: as3935: fix iio_trigger_poll issue Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 087/150] block: Avoid that blk_exit_rl() triggers a use-after-free Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 088/150] mei: make sysfs modalias format similar as uevent modalias Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 089/150] random: invalidate batched entropy after crng init Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 090/150] cpufreq: cpufreq_register_driver() should return -ENODEV if init fails Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 091/150] target: Re-add check to reject control WRITEs with overflow data Greg Kroah-Hartman
2017-06-12 15:24 ` [PATCH 4.11 092/150] drm/msm: Expose our reservation object when exporting a dmabuf Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 093/150] drm/msm/mdp5: use __drm_atomic_helper_plane_duplicate_state() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 094/150] ahci: Acer SA5-271 SSD Not Detected Fix Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 095/150] [media] rc-core: race condition during ir_raw_event_register() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 096/150] cgroup: Prevent kill_css() from being called more than once Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 097/150] Input: elantech - add Fujitsu Lifebook E546/E557 to force crc_enabled Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 098/150] cpuset: consider dying css as offline Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 099/150] ufs: restore proper tail allocation Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 100/150] fix ufs_isblockset() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 101/150] ufs: restore maintaining ->i_blocks Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 102/150] ufs: set correct ->s_maxsize Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 103/150] ufs_extend_tail(): fix the braino in calling conventions of ufs_new_fragments() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 104/150] ufs_getfrag_block(): we only grab ->truncate_mutex on block creation path Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 105/150] excessive checks in ufs_write_failed() and ufs_evict_inode() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 106/150] cxl: Fix error path on bad ioctl Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 107/150] cxl: Avoid double free_irq() for psl,slice interrupts Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 108/150] btrfs: use correct types for page indices in btrfs_page_exists_in_range Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 109/150] btrfs: fix memory leak in update_space_info failure path Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 110/150] btrfs: fix race with relocation recovery and fs_root setup Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 111/150] Btrfs: fix delalloc accounting leak caused by u32 overflow Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 112/150] KVM: arm/arm64: Handle possible NULL stage2 pud when ageing pages Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 113/150] scsi: qla2xxx: dont disable a not previously enabled PCI device Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 114/150] scsi: qla2xxx: Fix recursive loop during target mode configuration for ISP25XX leaving system unresponsive Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 115/150] scsi: qla2xxx: Fix crash due to mismatch mumber of Q-pair creation for Multi queue Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 116/150] scsi: qla2xxx: Fix NULL pointer access due to redundant fc_host_port_name call Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 117/150] scsi: qla2xxx: Modify T262 FW dump template to specify same start/end to debug customer issues Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 118/150] scsi: qla2xxx: Set bit 15 for DIAG_ECHO_TEST MBC Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 119/150] scsi: qla2xxx: Fix mailbox pointer error in fwdump capture Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 120/150] powerpc/sysdev/simple_gpio: Fix oops in gpio save_regs function Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 121/150] powerpc/numa: Fix percpu allocations to be NUMA aware Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 122/150] powerpc/hotplug-mem: Fix missing endian conversion of aa_index Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 123/150] powerpc/kernel: Fix FP and vector register restoration Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 124/150] powerpc/kernel: Initialize load_tm on task creation Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 125/150] Revert "ata: sata_mv: Convert to devm_ioremap_resource()" Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 126/150] perf/core: Drop kernel samples even though :u is specified Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 127/150] srcu: Allow use of Classic SRCU from both process and interrupt context Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 128/150] net: qcom/emac: do not use hardware mdio automatic polling Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 129/150] drm/vmwgfx: Handle vmalloc() failure in vmw_local_fifo_reserve() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 130/150] drm/vmwgfx: limit the number of mip levels in vmw_gb_surface_define_ioctl() Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 131/150] drm/vmwgfx: Make sure backup_handle is always valid Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 132/150] x86/microcode/intel: Clear patch pointer before jettisoning the initrd Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 133/150] drm/nouveau/tmr: fully separate alarm execution/pending lists Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 134/150] ALSA: timer: Fix race between read and ioctl Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 135/150] ALSA: timer: Fix missing queue indices reset at SNDRV_TIMER_IOCTL_SELECT Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 136/150] ASoC: Fix use-after-free at card unregistration Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 137/150] cpu/hotplug: Drop the device lock on error Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 138/150] drivers: char: mem: Fix wraparound check to allow mappings up to the end Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 141/150] serial: sh-sci: Fix panic when serial console and DMA are enabled Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 142/150] pinctrl: cherryview: Add terminate entry for dmi_system_id tables Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 143/150] cgroup: mark cgroup_get() with __maybe_unused Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 144/150] iomap_dio_rw: Prevent reading file data beyond iomap_dio->i_size Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 145/150] tracing: Use strlcpy() instead of strcpy() in __trace_find_cmdline() Greg Kroah-Hartman
2017-06-12 15:37   ` Steven Rostedt
2017-06-12 16:05     ` Greg Kroah-Hartman
2017-06-12 16:25       ` Steven Rostedt
2017-06-13  7:28         ` Greg Kroah-Hartman
2017-06-12 15:25 ` [PATCH 4.11 146/150] hwmon: (coretemp) Handle frozen hotplug state correctly Greg Kroah-Hartman
2017-06-12 15:25 ` Greg Kroah-Hartman [this message]
2017-06-12 15:25 ` [PATCH 4.11 150/150] netfilter: nft_set_rbtree: handle element re-addition after deletion Greg Kroah-Hartman
2017-06-12 22:03 ` [PATCH 4.11 000/150] 4.11.5-stable review Guenter Roeck
2017-06-13  7:23   ` Greg Kroah-Hartman
2017-06-13  0:12 ` Shuah Khan
2017-06-13  7:24   ` Greg Kroah-Hartman

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=20170612152526.230286110@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paul@paul-moore.com \
    --cc=stable@vger.kernel.org \
    --cc=xiyou.wangcong@gmail.com \
    /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

Powered by JetHome