From 3eb24a48d5189a6a75a3e71ff03eff6f787ca3a8 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Mon, 1 Mar 2021 15:21:50 +0100 Subject: [PATCH] 4.4-stable patches added patches: futex-fix-owner_dead-fixup.patch --- queue-4.4/futex-fix-owner_dead-fixup.patch | 60 ++++++++++++++++++++++ queue-4.4/series | 1 + 2 files changed, 61 insertions(+) create mode 100644 queue-4.4/futex-fix-owner_dead-fixup.patch diff --git a/queue-4.4/futex-fix-owner_dead-fixup.patch b/queue-4.4/futex-fix-owner_dead-fixup.patch new file mode 100644 index 00000000000..8547c793f71 --- /dev/null +++ b/queue-4.4/futex-fix-owner_dead-fixup.patch @@ -0,0 +1,60 @@ +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 +Signed-off-by: Zheng Yejian +Reviewed-by: Lee Jones +Signed-off-by: Greg Kroah-Hartman +--- + kernel/futex.c | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +--- a/kernel/futex.c ++++ b/kernel/futex.c +@@ -2248,10 +2248,6 @@ static int __fixup_pi_state_owner(u32 __ + + oldowner = pi_state->owner; + +- /* Owner died? */ +- if (!pi_state->owner) +- newtid |= FUTEX_OWNER_DIED; +- + /* + * We are here because either: + * +@@ -2309,6 +2305,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.4/series b/queue-4.4/series index 2d1514f278d..8b45ffcad07 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -89,3 +89,4 @@ dm-era-fix-bitset-memory-leaks.patch dm-era-use-correct-value-size-in-equality-function-of-writeset-tree.patch dm-era-reinitialize-bitset-cache-before-digesting-a-new-writeset.patch dm-era-only-resize-metadata-in-preresume.patch +futex-fix-owner_dead-fixup.patch -- 2.47.3