linux-kernel.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, Oleg Nesterov <oleg@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	Ingo Molnar <mingo@kernel.org>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>
Subject: [PATCH 4.14 197/209] futex: Prevent exit livelock
Date: Wed,  4 Dec 2019 18:56:49 +0100	[thread overview]
Message-ID: <20191204175337.045798663@linuxfoundation.org> (raw)
In-Reply-To: <20191204175321.609072813@linuxfoundation.org>

From: Thomas Gleixner <tglx@linutronix.de>

commit 3ef240eaff36b8119ac9e2ea17cbf41179c930ba upstream.

Oleg provided the following test case:

int main(void)
{
	struct sched_param sp = {};

	sp.sched_priority = 2;
	assert(sched_setscheduler(0, SCHED_FIFO, &sp) == 0);

	int lock = vfork();
	if (!lock) {
		sp.sched_priority = 1;
		assert(sched_setscheduler(0, SCHED_FIFO, &sp) == 0);
		_exit(0);
	}

	syscall(__NR_futex, &lock, FUTEX_LOCK_PI, 0,0,0);
	return 0;
}

This creates an unkillable RT process spinning in futex_lock_pi() on a UP
machine or if the process is affine to a single CPU. The reason is:

 parent	    	    			child

  set FIFO prio 2

  vfork()			->	set FIFO prio 1
   implies wait_for_child()	 	sched_setscheduler(...)
 			   		exit()
					do_exit()
 					....
					mm_release()
					  tsk->futex_state = FUTEX_STATE_EXITING;
					  exit_futex(); (NOOP in this case)
					  complete() --> wakes parent
  sys_futex()
    loop infinite because
    tsk->futex_state == FUTEX_STATE_EXITING

The same problem can happen just by regular preemption as well:

  task holds futex
  ...
  do_exit()
    tsk->futex_state = FUTEX_STATE_EXITING;

  --> preemption (unrelated wakeup of some other higher prio task, e.g. timer)

  switch_to(other_task)

  return to user
  sys_futex()
	loop infinite as above

Just for the fun of it the futex exit cleanup could trigger the wakeup
itself before the task sets its futex state to DEAD.

To cure this, the handling of the exiting owner is changed so:

   - A refcount is held on the task

   - The task pointer is stored in a caller visible location

   - The caller drops all locks (hash bucket, mmap_sem) and blocks
     on task::futex_exit_mutex. When the mutex is acquired then
     the exiting task has completed the cleanup and the state
     is consistent and can be reevaluated.

This is not a pretty solution, but there is no choice other than returning
an error code to user space, which would break the state consistency
guarantee and open another can of problems including regressions.

For stable backports the preparatory commits ac31c7ff8624 .. ba31c1a48538
are required as well, but for anything older than 5.3.y the backports are
going to be provided when this hits mainline as the other dependencies for
those kernels are definitely not stable material.

Fixes: 778e9a9c3e71 ("pi-futex: fix exit races and locking problems")
Reported-by: Oleg Nesterov <oleg@redhat.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Ingo Molnar <mingo@kernel.org>
Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Stable Team <stable@vger.kernel.org>
Link: https://lkml.kernel.org/r/20191106224557.041676471@linutronix.de
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

---
 kernel/futex.c |  106 ++++++++++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 91 insertions(+), 15 deletions(-)

--- a/kernel/futex.c
+++ b/kernel/futex.c
@@ -1176,6 +1176,36 @@ out_error:
 	return ret;
 }
 
+/**
+ * wait_for_owner_exiting - Block until the owner has exited
+ * @exiting:	Pointer to the exiting task
+ *
+ * Caller must hold a refcount on @exiting.
+ */
+static void wait_for_owner_exiting(int ret, struct task_struct *exiting)
+{
+	if (ret != -EBUSY) {
+		WARN_ON_ONCE(exiting);
+		return;
+	}
+
+	if (WARN_ON_ONCE(ret == -EBUSY && !exiting))
+		return;
+
+	mutex_lock(&exiting->futex_exit_mutex);
+	/*
+	 * No point in doing state checking here. If the waiter got here
+	 * while the task was in exec()->exec_futex_release() then it can
+	 * have any FUTEX_STATE_* value when the waiter has acquired the
+	 * mutex. OK, if running, EXITING or DEAD if it reached exit()
+	 * already. Highly unlikely and not a problem. Just one more round
+	 * through the futex maze.
+	 */
+	mutex_unlock(&exiting->futex_exit_mutex);
+
+	put_task_struct(exiting);
+}
+
 static int handle_exit_race(u32 __user *uaddr, u32 uval,
 			    struct task_struct *tsk)
 {
@@ -1237,7 +1267,8 @@ static int handle_exit_race(u32 __user *
  * it after doing proper sanity checks.
  */
 static int attach_to_pi_owner(u32 __user *uaddr, u32 uval, union futex_key *key,
-			      struct futex_pi_state **ps)
+			      struct futex_pi_state **ps,
+			      struct task_struct **exiting)
 {
 	pid_t pid = uval & FUTEX_TID_MASK;
 	struct futex_pi_state *pi_state;
@@ -1276,7 +1307,19 @@ static int attach_to_pi_owner(u32 __user
 		int ret = handle_exit_race(uaddr, uval, p);
 
 		raw_spin_unlock_irq(&p->pi_lock);
-		put_task_struct(p);
+		/*
+		 * If the owner task is between FUTEX_STATE_EXITING and
+		 * FUTEX_STATE_DEAD then store the task pointer and keep
+		 * the reference on the task struct. The calling code will
+		 * drop all locks, wait for the task to reach
+		 * FUTEX_STATE_DEAD and then drop the refcount. This is
+		 * required to prevent a live lock when the current task
+		 * preempted the exiting task between the two states.
+		 */
+		if (ret == -EBUSY)
+			*exiting = p;
+		else
+			put_task_struct(p);
 		return ret;
 	}
 
@@ -1315,7 +1358,8 @@ static int attach_to_pi_owner(u32 __user
 
 static int lookup_pi_state(u32 __user *uaddr, u32 uval,
 			   struct futex_hash_bucket *hb,
-			   union futex_key *key, struct futex_pi_state **ps)
+			   union futex_key *key, struct futex_pi_state **ps,
+			   struct task_struct **exiting)
 {
 	struct futex_q *top_waiter = futex_top_waiter(hb, key);
 
@@ -1330,7 +1374,7 @@ static int lookup_pi_state(u32 __user *u
 	 * We are the first waiter - try to look up the owner based on
 	 * @uval and attach to it.
 	 */
-	return attach_to_pi_owner(uaddr, uval, key, ps);
+	return attach_to_pi_owner(uaddr, uval, key, ps, exiting);
 }
 
 static int lock_pi_update_atomic(u32 __user *uaddr, u32 uval, u32 newval)
@@ -1358,6 +1402,8 @@ static int lock_pi_update_atomic(u32 __u
  *			lookup
  * @task:		the task to perform the atomic lock work for.  This will
  *			be "current" except in the case of requeue pi.
+ * @exiting:		Pointer to store the task pointer of the owner task
+ *			which is in the middle of exiting
  * @set_waiters:	force setting the FUTEX_WAITERS bit (1) or not (0)
  *
  * Return:
@@ -1366,11 +1412,17 @@ static int lock_pi_update_atomic(u32 __u
  *  - <0 - error
  *
  * The hb->lock and futex_key refs shall be held by the caller.
+ *
+ * @exiting is only set when the return value is -EBUSY. If so, this holds
+ * a refcount on the exiting task on return and the caller needs to drop it
+ * after waiting for the exit to complete.
  */
 static int futex_lock_pi_atomic(u32 __user *uaddr, struct futex_hash_bucket *hb,
 				union futex_key *key,
 				struct futex_pi_state **ps,
-				struct task_struct *task, int set_waiters)
+				struct task_struct *task,
+				struct task_struct **exiting,
+				int set_waiters)
 {
 	u32 uval, newval, vpid = task_pid_vnr(task);
 	struct futex_q *top_waiter;
@@ -1440,7 +1492,7 @@ static int futex_lock_pi_atomic(u32 __us
 	 * attach to the owner. If that fails, no harm done, we only
 	 * set the FUTEX_WAITERS bit in the user space variable.
 	 */
-	return attach_to_pi_owner(uaddr, newval, key, ps);
+	return attach_to_pi_owner(uaddr, newval, key, ps, exiting);
 }
 
 /**
@@ -1859,6 +1911,8 @@ void requeue_pi_wake_futex(struct futex_
  * @key1:		the from futex key
  * @key2:		the to futex key
  * @ps:			address to store the pi_state pointer
+ * @exiting:		Pointer to store the task pointer of the owner task
+ *			which is in the middle of exiting
  * @set_waiters:	force setting the FUTEX_WAITERS bit (1) or not (0)
  *
  * Try and get the lock on behalf of the top waiter if we can do it atomically.
@@ -1866,16 +1920,20 @@ void requeue_pi_wake_futex(struct futex_
  * then direct futex_lock_pi_atomic() to force setting the FUTEX_WAITERS bit.
  * hb1 and hb2 must be held by the caller.
  *
+ * @exiting is only set when the return value is -EBUSY. If so, this holds
+ * a refcount on the exiting task on return and the caller needs to drop it
+ * after waiting for the exit to complete.
+ *
  * Return:
  *  -  0 - failed to acquire the lock atomically;
  *  - >0 - acquired the lock, return value is vpid of the top_waiter
  *  - <0 - error
  */
-static int futex_proxy_trylock_atomic(u32 __user *pifutex,
-				 struct futex_hash_bucket *hb1,
-				 struct futex_hash_bucket *hb2,
-				 union futex_key *key1, union futex_key *key2,
-				 struct futex_pi_state **ps, int set_waiters)
+static int
+futex_proxy_trylock_atomic(u32 __user *pifutex, struct futex_hash_bucket *hb1,
+			   struct futex_hash_bucket *hb2, union futex_key *key1,
+			   union futex_key *key2, struct futex_pi_state **ps,
+			   struct task_struct **exiting, int set_waiters)
 {
 	struct futex_q *top_waiter = NULL;
 	u32 curval;
@@ -1912,7 +1970,7 @@ static int futex_proxy_trylock_atomic(u3
 	 */
 	vpid = task_pid_vnr(top_waiter->task);
 	ret = futex_lock_pi_atomic(pifutex, hb2, key2, ps, top_waiter->task,
-				   set_waiters);
+				   exiting, set_waiters);
 	if (ret == 1) {
 		requeue_pi_wake_futex(top_waiter, key2, hb2);
 		return vpid;
@@ -2041,6 +2099,8 @@ retry_private:
 	}
 
 	if (requeue_pi && (task_count - nr_wake < nr_requeue)) {
+		struct task_struct *exiting = NULL;
+
 		/*
 		 * Attempt to acquire uaddr2 and wake the top waiter. If we
 		 * intend to requeue waiters, force setting the FUTEX_WAITERS
@@ -2048,7 +2108,8 @@ retry_private:
 		 * faults rather in the requeue loop below.
 		 */
 		ret = futex_proxy_trylock_atomic(uaddr2, hb1, hb2, &key1,
-						 &key2, &pi_state, nr_requeue);
+						 &key2, &pi_state,
+						 &exiting, nr_requeue);
 
 		/*
 		 * At this point the top_waiter has either taken uaddr2 or is
@@ -2075,7 +2136,8 @@ retry_private:
 			 * If that call succeeds then we have pi_state and an
 			 * initial refcount on it.
 			 */
-			ret = lookup_pi_state(uaddr2, ret, hb2, &key2, &pi_state);
+			ret = lookup_pi_state(uaddr2, ret, hb2, &key2,
+					      &pi_state, &exiting);
 		}
 
 		switch (ret) {
@@ -2105,6 +2167,12 @@ retry_private:
 			hb_waiters_dec(hb2);
 			put_futex_key(&key2);
 			put_futex_key(&key1);
+			/*
+			 * Handle the case where the owner is in the middle of
+			 * exiting. Wait for the exit to complete otherwise
+			 * this task might loop forever, aka. live lock.
+			 */
+			wait_for_owner_exiting(ret, exiting);
 			cond_resched();
 			goto retry;
 		default:
@@ -2820,6 +2888,7 @@ static int futex_lock_pi(u32 __user *uad
 {
 	struct hrtimer_sleeper timeout, *to = NULL;
 	struct futex_pi_state *pi_state = NULL;
+	struct task_struct *exiting = NULL;
 	struct rt_mutex_waiter rt_waiter;
 	struct futex_hash_bucket *hb;
 	struct futex_q q = futex_q_init;
@@ -2847,7 +2916,8 @@ retry:
 retry_private:
 	hb = queue_lock(&q);
 
-	ret = futex_lock_pi_atomic(uaddr, hb, &q.key, &q.pi_state, current, 0);
+	ret = futex_lock_pi_atomic(uaddr, hb, &q.key, &q.pi_state, current,
+				   &exiting, 0);
 	if (unlikely(ret)) {
 		/*
 		 * Atomic work succeeded and we got the lock,
@@ -2870,6 +2940,12 @@ retry_private:
 			 */
 			queue_unlock(hb);
 			put_futex_key(&q.key);
+			/*
+			 * Handle the case where the owner is in the middle of
+			 * exiting. Wait for the exit to complete otherwise
+			 * this task might loop forever, aka. live lock.
+			 */
+			wait_for_owner_exiting(ret, exiting);
 			cond_resched();
 			goto retry;
 		default:



  parent reply	other threads:[~2019-12-04 18:09 UTC|newest]

Thread overview: 223+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-12-04 17:53 [PATCH 4.14 000/209] 4.14.158-stable review Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 001/209] clk: meson: gxbb: let sar_adc_clk_div set the parent clock rate Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 002/209] ASoC: msm8916-wcd-analog: Fix RX1 selection in RDAC2 MUX Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 003/209] ASoC: compress: fix unsigned integer overflow check Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 004/209] reset: Fix memory leak in reset_control_array_put() Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 005/209] ASoC: kirkwood: fix external clock probe defer Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 006/209] clk: samsung: exynos5420: Preserve PLL configuration during suspend/resume Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 007/209] reset: fix reset_control_ops kerneldoc comment Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 008/209] clk: at91: avoid sleeping early Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 009/209] clk: sunxi-ng: a80: fix the zeroing of bits 16 and 18 Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 010/209] idr: Fix idr_alloc_u32 on 32-bit systems Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 011/209] x86/resctrl: Prevent NULL pointer dereference when reading mondata Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 012/209] clk: ti: dra7-atl-clock: Remove ti_clk_add_alias call Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 013/209] net: fec: add missed clk_disable_unprepare in remove Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 014/209] bridge: ebtables: dont crash when using dnat target in output chains Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 015/209] can: peak_usb: report bus recovery as well Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 016/209] can: c_can: D_CAN: c_can_chip_config(): perform a sofware reset on open Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 017/209] can: rx-offload: can_rx_offload_queue_tail(): fix error handling, avoid skb mem leak Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 018/209] can: rx-offload: can_rx_offload_offload_one(): do not increase the skb_queue beyond skb_queue_len_max Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 019/209] can: rx-offload: can_rx_offload_offload_one(): increment rx_fifo_errors on queue overflow or OOM Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 020/209] can: rx-offload: can_rx_offload_offload_one(): use ERR_PTR() to propagate error value in case of errors Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 021/209] can: rx-offload: can_rx_offload_irq_offload_timestamp(): continue on error Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 022/209] can: rx-offload: can_rx_offload_irq_offload_fifo(): " Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 023/209] watchdog: meson: Fix the wrong value of left time Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 024/209] scripts/gdb: fix debugging modules compiled with hot/cold partitioning Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 025/209] net: bcmgenet: reapply manual settings to the PHY Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 026/209] ceph: return -EINVAL if given fsc mount option on kernel w/o support Greg Kroah-Hartman
2019-12-04 17:53 ` [PATCH 4.14 027/209] mac80211: fix station inactive_time shortly after boot Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 028/209] block: drbd: remove a stray unlock in __drbd_send_protocol() Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 029/209] pwm: bcm-iproc: Prevent unloading the driver module while in use Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 030/209] scsi: lpfc: Fix kernel Oops due to null pring pointers Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 031/209] scsi: lpfc: Fix dif and first burst use in write commands Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 032/209] ARM: dts: Fix up SQ201 flash access Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 033/209] ARM: debug-imx: only define DEBUG_IMX_UART_PORT if needed Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 034/209] ARM: dts: imx53-voipac-dmm-668: Fix memory node duplication Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 035/209] parisc: Fix serio address output Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 036/209] parisc: Fix HP SDC hpa " Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 037/209] arm64: mm: Prevent mismatched 52-bit VA support Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 038/209] arm64: smp: Handle errors reported by the firmware Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 039/209] ARM: OMAP1: fix USB configuration for device-only setups Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 040/209] RDMA/vmw_pvrdma: Use atomic memory allocation in create AH Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 041/209] PM / AVS: SmartReflex: NULL check before some freeing functions is not needed Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 042/209] ARM: ks8695: fix section mismatch warning Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 043/209] ACPI / LPSS: Ignore acpi_device_fix_up_power() return value Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 044/209] scsi: lpfc: Enable Management features for IF_TYPE=6 Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 045/209] crypto: user - support incremental algorithm dumps Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 046/209] mwifiex: fix potential NULL dereference and use after free Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 047/209] mwifiex: debugfs: correct histogram spacing, formatting Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 048/209] rtl818x: fix potential use after free Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 049/209] xfs: require both realtime inodes to mount Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 050/209] ubi: Put MTD device after it is not used Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 051/209] ubi: Do not drop UBI device reference before using Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 052/209] microblaze: adjust the help to the real behavior Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 053/209] microblaze: move "... is ready" messages to arch/microblaze/Makefile Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 054/209] iwlwifi: move iwl_nvm_check_version() into dvm Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 055/209] gpiolib: Fix return value of gpio_to_desc() stub if !GPIOLIB Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 056/209] kvm: vmx: Set IA32_TSC_AUX for legacy mode guests Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 057/209] VSOCK: bind to random port for VMADDR_PORT_ANY Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 058/209] mmc: meson-gx: make sure the descriptor is stopped on errors Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 059/209] mtd: rawnand: sunxi: Write pageprog related opcodes to WCMD_SET Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 060/209] btrfs: only track ref_heads in delayed_ref_updates Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 061/209] HID: intel-ish-hid: fixes incorrect error handling Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 062/209] serial: 8250: Rate limit serial port rx interrupts during input overruns Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 063/209] kprobes/x86/xen: blacklist non-attachable xen interrupt functions Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 064/209] xen/pciback: Check dev_data before using it Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 065/209] vfio-mdev/samples: Use u8 instead of char for handle functions Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 066/209] pinctrl: xway: fix gpio-hog related boot issues Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 067/209] net/mlx5: Continue driver initialization despite debugfs failure Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 068/209] exofs_mount(): fix leaks on failure exits Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 069/209] bnxt_en: Return linux standard errors in bnxt_ethtool.c Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 070/209] bnxt_en: query force speeds before disabling autoneg mode Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 071/209] KVM: s390: unregister debug feature on failing arch init Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 072/209] pinctrl: sh-pfc: sh7264: Fix PFCR3 and PFCR0 register configuration Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 073/209] pinctrl: sh-pfc: sh7734: Fix shifted values in IPSR10 Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 074/209] HID: doc: fix wrong data structure reference for UHID_OUTPUT Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 075/209] dm flakey: Properly corrupt multi-page bios Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 076/209] gfs2: take jdata unstuff into account in do_grow Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 077/209] xfs: Align compat attrlist_by_handle with native implementation Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 078/209] xfs: Fix bulkstat compat ioctls on x32 userspace Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 079/209] IB/qib: Fix an error code in qib_sdma_verbs_send() Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 080/209] clocksource/drivers/fttmr010: Fix invalid interrupt register access Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 081/209] vxlan: Fix error path in __vxlan_dev_create() Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 082/209] powerpc/book3s/32: fix number of bats in p/v_block_mapped() Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 083/209] powerpc/xmon: fix dump_segments() Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 084/209] drivers/regulator: fix a missing check of return value Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 085/209] Bluetooth: hci_bcm: Handle specific unknown packets after firmware loading Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 086/209] serial: max310x: Fix tx_empty() callback Greg Kroah-Hartman
2019-12-04 17:54 ` [PATCH 4.14 087/209] openrisc: Fix broken paths to arch/or32 Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 088/209] RDMA/srp: Propagate ib_post_send() failures to the SCSI mid-layer Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 089/209] scsi: qla2xxx: deadlock by configfs_depend_item Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 090/209] scsi: csiostor: fix incorrect dma device in case of vport Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 091/209] ath6kl: Only use match sets when firmware supports it Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 092/209] ath6kl: Fix off by one error in scan completion Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 093/209] powerpc/perf: Fix unit_sel/cache_sel checks Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 094/209] powerpc/prom: fix early DEBUG messages Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 095/209] powerpc/mm: Make NULL pointer deferences explicit on bad page faults Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 096/209] powerpc/44x/bamboo: Fix PCI range Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 097/209] vfio/spapr_tce: Get rid of possible infinite loop Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 098/209] powerpc/powernv/eeh/npu: Fix uninitialized variables in opal_pci_eeh_freeze_status Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 099/209] drbd: ignore "all zero" peer volume sizes in handshake Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 100/209] drbd: reject attach of unsuitable uuids even if connected Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 101/209] drbd: do not block when adjusting "disk-options" while IO is frozen Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 102/209] drbd: fix print_st_err()s prototype to match the definition Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 103/209] IB/rxe: Make counters thread safe Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 104/209] regulator: tps65910: fix a missing check of return value Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 105/209] powerpc/83xx: handle machine check caused by watchdog timer Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 106/209] powerpc/pseries: Fix node leak in update_lmb_associativity_index() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 107/209] crypto: mxc-scc - fix build warnings on ARM64 Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 108/209] pwm: clps711x: Fix period calculation Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 109/209] net/netlink_compat: Fix a missing check of nla_parse_nested Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 110/209] net/net_namespace: Check the return value of register_pernet_subsys() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 111/209] f2fs: fix to dirty inode synchronously Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 112/209] um: Make GCOV depend on !KCOV Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 113/209] net: (cpts) fix a missing check of clk_prepare Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 114/209] net: stmicro: " Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 115/209] net: dsa: bcm_sf2: Propagate error value from mdio_write Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 116/209] atl1e: checking the status of atl1e_write_phy_reg Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 117/209] tipc: fix a missing check of genlmsg_put Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 118/209] net/wan/fsl_ucc_hdlc: Avoid double free in ucc_hdlc_probe() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 119/209] ocfs2: clear journal dirty flag after shutdown journal Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 120/209] vmscan: return NODE_RECLAIM_NOSCAN in node_reclaim() when CONFIG_NUMA is n Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 121/209] lib/genalloc.c: fix allocation of aligned buffer from non-aligned chunk Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 122/209] lib/genalloc.c: use vzalloc_node() to allocate the bitmap Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 123/209] fork: fix some -Wmissing-prototypes warnings Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 124/209] drivers/base/platform.c: kmemleak ignore a known leak Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 125/209] lib/genalloc.c: include vmalloc.h Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 126/209] mtd: Check add_mtd_device() ret code Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 127/209] tipc: fix memory leak in tipc_nl_compat_publ_dump Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 128/209] net/core/neighbour: tell kmemleak about hash tables Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 129/209] PCI/MSI: Return -ENOSPC from pci_alloc_irq_vectors_affinity() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 130/209] net/core/neighbour: fix kmemleak minimal reference count for hash tables Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 131/209] serial: 8250: Fix serial8250 initialization crash Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 132/209] gpu: ipu-v3: pre: dont trigger update if buffer address doesnt change Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 133/209] sfc: suppress duplicate nvmem partition types in efx_ef10_mtd_probe Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 134/209] ip_tunnel: Make none-tunnel-dst tunnel port work with lwtunnel Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 135/209] decnet: fix DN_IFREQ_SIZE Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 136/209] net/smc: prevent races between smc_lgr_terminate() and smc_conn_free() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 137/209] blktrace: Show requests without sector Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 138/209] tipc: fix skb may be leaky in tipc_link_input Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 139/209] sfc: initialise found bitmap in efx_ef10_mtd_probe Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 140/209] net: fix possible overflow in __sk_mem_raise_allocated() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 141/209] sctp: dont compare hb_timer expire date before starting it Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 142/209] bpf: decrease usercnt if bpf_map_new_fd() fails in bpf_map_get_fd_by_id() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 143/209] net: dev: Use unsigned integer as an argument to left-shift Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 144/209] kvm: properly check debugfs dentry before using it Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 145/209] bpf: drop refcount if bpf_map_new_fd() fails in map_create() Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 146/209] net: hns3: Change fw error code NOT_EXEC to NOT_SUPPORTED Greg Kroah-Hartman
2019-12-04 17:55 ` [PATCH 4.14 147/209] iommu/amd: Fix NULL dereference bug in match_hid_uid Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 148/209] apparmor: delete the dentry in aafs_remove() to avoid a leak Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 149/209] scsi: libsas: Support SATA PHY connection rate unmatch fixing during discovery Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 150/209] ACPI / APEI: Dont wait to serialise with oops messages when panic()ing Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 151/209] ACPI / APEI: Switch estatus pool to use vmalloc memory Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 152/209] scsi: libsas: Check SMP PHY control function result Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 153/209] powerpc/pseries/dlpar: Fix a missing check in dlpar_parse_cc_property() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 154/209] mtd: Remove a debug trace in mtdpart.c Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 155/209] mm, gup: add missing refcount overflow checks on s390 Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 156/209] clk: at91: fix update bit maps on CFG_MOR write Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 157/209] clk: at91: generated: set audio_pll_allowed in at91_clk_register_generated() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 158/209] staging: rtl8192e: fix potential use after free Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 159/209] staging: rtl8723bs: Drop ACPI device ids Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 160/209] staging: rtl8723bs: Add 024c:0525 to the list of SDIO device-ids Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 161/209] USB: serial: ftdi_sio: add device IDs for U-Blox C099-F9P Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 162/209] mei: bus: prefix device names on bus with the bus name Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 163/209] xfrm: Fix memleak on xfrm state destroy Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 164/209] media: v4l2-ctrl: fix flags for DO_WHITE_BALANCE Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 165/209] net: macb: fix error format in dev_err() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 166/209] pwm: Clear chip_data in pwm_put() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 167/209] media: atmel: atmel-isc: fix asd memory allocation Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 168/209] media: atmel: atmel-isc: fix INIT_WORK misplacement Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 169/209] macvlan: schedule bc_work even if error Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 170/209] net: psample: fix skb_over_panic Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 171/209] openvswitch: fix flow command message size Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 172/209] slip: Fix use-after-free Read in slip_open Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 173/209] openvswitch: drop unneeded BUG_ON() in ovs_flow_cmd_build_info() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 174/209] openvswitch: remove another BUG_ON() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 175/209] tipc: fix link name length check Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 176/209] sctp: cache netns in sctp_ep_common Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 177/209] net: sched: fix `tc -s class show` no bstats on class with nolock subqueues Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 178/209] ext4: add more paranoia checking in ext4_expand_extra_isize handling Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 179/209] watchdog: sama5d4: fix WDD value to be always set to max Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 180/209] net: macb: Fix SUBNS increment and increase resolution Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 181/209] net: macb driver, check for SKBTX_HW_TSTAMP Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 182/209] mtd: rawnand: atmel: Fix spelling mistake in error message Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 183/209] mtd: rawnand: atmel: fix possible object reference leak Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 184/209] mtd: spi-nor: cast to u64 to avoid uint overflows Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 185/209] y2038: futex: Move compat implementation into futex.c Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 186/209] futex: Prevent robust futex exit race Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 187/209] futex: Move futex exit handling into futex code Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 188/209] futex: Replace PF_EXITPIDONE with a state Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 189/209] exit/exec: Seperate mm_release() Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 190/209] futex: Split futex_mm_release() for exit/exec Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 191/209] futex: Set task::futex_state to DEAD right after handling futex exit Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 192/209] futex: Mark the begin of futex exit explicitly Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 193/209] futex: Sanitize exit state handling Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 194/209] futex: Provide state handling for exec() as well Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 195/209] futex: Add mutex around futex exit Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 196/209] futex: Provide distinct return value when owner is exiting Greg Kroah-Hartman
2019-12-04 17:56 ` Greg Kroah-Hartman [this message]
2019-12-04 17:56 ` [PATCH 4.14 198/209] HID: core: check whether Usage Page item is after Usage ID items Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 199/209] crypto: stm32/hash - Fix hmac issue more than 256 bytes Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 200/209] media: stm32-dcmi: fix DMA corruption when stopping streaming Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 201/209] hwrng: stm32 - fix unbalanced pm_runtime_enable Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 202/209] mailbox: mailbox-test: fix null pointer if no mmio Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 203/209] pinctrl: stm32: fix memory leak issue Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 204/209] ASoC: stm32: i2s: fix dma configuration Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 205/209] ASoC: stm32: i2s: fix 16 bit format support Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 206/209] ASoC: stm32: i2s: fix IRQ clearing Greg Kroah-Hartman
2019-12-04 17:56 ` [PATCH 4.14 207/209] platform/x86: hp-wmi: Fix ACPI errors caused by too small buffer Greg Kroah-Hartman
2019-12-04 17:57 ` [PATCH 4.14 208/209] platform/x86: hp-wmi: Fix ACPI errors caused by passing 0 as input size Greg Kroah-Hartman
2019-12-04 17:57 ` [PATCH 4.14 209/209] net: fec: fix clock count mis-match Greg Kroah-Hartman
2019-12-05  5:17 ` [PATCH 4.14 000/209] 4.14.158-stable review Naresh Kamboju
2019-12-05  8:48   ` Greg Kroah-Hartman
2019-12-05  6:59 ` Jon Hunter
2019-12-05  8:48   ` Greg Kroah-Hartman
2019-12-05 14:14 ` Guenter Roeck
2019-12-05 14:16   ` Greg Kroah-Hartman
2019-12-06 15:24 ` shuah
2019-12-06 15:28   ` Greg Kroah-Hartman
2019-12-06 15:35     ` shuah
2019-12-06 16:10       ` Guenter Roeck
2019-12-06 16:23         ` shuah
2019-12-06 16:56           ` Guenter Roeck
2019-12-10  0:52             ` shuah

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=20191204175337.045798663@linuxfoundation.org \
    --to=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=oleg@redhat.com \
    --cc=peterz@infradead.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@linutronix.de \
    /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).