From: Greg Kroah-Hartman Date: Wed, 31 Jan 2018 15:24:25 +0000 (+0100) Subject: 4.14-stable patches X-Git-Tag: v4.4.115~28 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6d4445dd65f139ebf36f00479ad6cd7e96c07207;p=thirdparty%2Fkernel%2Fstable-queue.git 4.14-stable patches added patches: futex-fix-owner_dead-fixup.patch --- diff --git a/queue-4.14/futex-fix-owner_dead-fixup.patch b/queue-4.14/futex-fix-owner_dead-fixup.patch new file mode 100644 index 00000000000..93016ce129e --- /dev/null +++ b/queue-4.14/futex-fix-owner_dead-fixup.patch @@ -0,0 +1,59 @@ +From a97cb0e7b3f4c6297fd857055ae8e895f402f501 Mon Sep 17 00:00:00 2001 +From: Peter Zijlstra +Date: Mon, 22 Jan 2018 11:39:47 +0100 +Subject: futex: Fix OWNER_DEAD fixup + +From: Peter Zijlstra + +commit a97cb0e7b3f4c6297fd857055ae8e895f402f501 upstream. + +Both Geert and DaveJ reported that the recent futex commit: + + c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex") + +introduced a problem with setting OWNER_DEAD. We set the bit on an +uninitialized variable and then entirely optimize it away as a +dead-store. + +Move the setting of the bit to where it is more useful. + +Reported-by: Geert Uytterhoeven +Reported-by: Dave Jones +Signed-off-by: Peter Zijlstra (Intel) +Cc: Andrew Morton +Cc: Linus Torvalds +Cc: Paul E. McKenney +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Fixes: c1e2f0eaf015 ("futex: Avoid violating the 10th rule of futex") +Link: http://lkml.kernel.org/r/20180122103947.GD2228@hirez.programming.kicks-ass.net +Signed-off-by: Ingo Molnar +Cc: Ozkan Sezer +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/futex.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2311,9 +2311,6 @@ static int fixup_pi_state_owner(u32 __us + raw_spin_lock_irq(&pi_state->pi_mutex.wait_lock); + + oldowner = pi_state->owner; +- /* Owner died? */ +- if (!pi_state->owner) +- newtid |= FUTEX_OWNER_DIED; + + /* + * We are here because either: +@@ -2374,6 +2371,9 @@ retry: + } + + newtid = task_pid_vnr(newowner) | FUTEX_WAITERS; ++ /* Owner died? */ ++ if (!pi_state->owner) ++ newtid |= FUTEX_OWNER_DIED; + + if (get_futex_value_locked(&uval, uaddr)) + goto handle_fault; diff --git a/queue-4.14/series b/queue-4.14/series new file mode 100644 index 00000000000..a2207f63ead --- /dev/null +++ b/queue-4.14/series @@ -0,0 +1 @@ +futex-fix-owner_dead-fixup.patch diff --git a/queue-4.9/series b/queue-4.9/series new file mode 100644 index 00000000000..e69de29bb2d