diff options
author | Romain Perier <romain.perier@opensource.viveris.fr> | 2019-01-11 15:52:15 +0100 |
---|---|---|
committer | Romain Perier <romain.perier@opensource.viveris.fr> | 2019-01-11 17:44:15 +0100 |
commit | fe5142170f582165349d8b4e1b4efa83b628b25e (patch) | |
tree | d6a7e3f96fe695ccf637407f04cd23028260470c /debian/patches-rt/rtmutex-futex-prepare-rt.patch | |
parent | d31776d28df358119e1c1caec843cc2e6ca1bd8a (diff) | |
download | linux-debian-fe5142170f582165349d8b4e1b4efa83b628b25e.tar.gz |
[rt] Update to 4.19.13-rt10
Diffstat (limited to 'debian/patches-rt/rtmutex-futex-prepare-rt.patch')
-rw-r--r-- | debian/patches-rt/rtmutex-futex-prepare-rt.patch | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/debian/patches-rt/rtmutex-futex-prepare-rt.patch b/debian/patches-rt/rtmutex-futex-prepare-rt.patch index 9cfe4f741..0078acace 100644 --- a/debian/patches-rt/rtmutex-futex-prepare-rt.patch +++ b/debian/patches-rt/rtmutex-futex-prepare-rt.patch @@ -1,7 +1,7 @@ Subject: rtmutex: Handle the various new futex race conditions From: Thomas Gleixner <tglx@linutronix.de> Date: Fri, 10 Jun 2011 11:04:15 +0200 -Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.10-rt8.tar.xz +Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/4.19/older/patches-4.19.13-rt10.tar.xz RT opens a few new interesting race conditions in the rtmutex/futex combo due to futex hash bucket lock being a 'sleeping' spinlock and @@ -16,7 +16,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> --- a/kernel/futex.c +++ b/kernel/futex.c -@@ -2086,6 +2086,16 @@ static int futex_requeue(u32 __user *uad +@@ -2143,6 +2143,16 @@ static int futex_requeue(u32 __user *uad requeue_pi_wake_futex(this, &key2, hb2); drop_count++; continue; @@ -33,7 +33,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } else if (ret) { /* * rt_mutex_start_proxy_lock() detected a -@@ -3126,7 +3136,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -3183,7 +3193,7 @@ static int futex_wait_requeue_pi(u32 __u struct hrtimer_sleeper timeout, *to = NULL; struct futex_pi_state *pi_state = NULL; struct rt_mutex_waiter rt_waiter; @@ -42,7 +42,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> union futex_key key2 = FUTEX_KEY_INIT; struct futex_q q = futex_q_init; int res, ret; -@@ -3184,20 +3194,55 @@ static int futex_wait_requeue_pi(u32 __u +@@ -3241,20 +3251,55 @@ static int futex_wait_requeue_pi(u32 __u /* Queue the futex_q, drop the hb lock, wait for wakeup. */ futex_wait_queue_me(hb, &q, to); @@ -109,7 +109,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> /* Check if the requeue code acquired the second futex for us. */ if (!q.rt_waiter) { -@@ -3206,7 +3251,8 @@ static int futex_wait_requeue_pi(u32 __u +@@ -3263,7 +3308,8 @@ static int futex_wait_requeue_pi(u32 __u * did a lock-steal - fix up the PI-state in that case. */ if (q.pi_state && (q.pi_state->owner != current)) { @@ -119,7 +119,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> ret = fixup_pi_state_owner(uaddr2, &q, current); if (ret && rt_mutex_owner(&q.pi_state->pi_mutex) == current) { pi_state = q.pi_state; -@@ -3217,7 +3263,7 @@ static int futex_wait_requeue_pi(u32 __u +@@ -3274,7 +3320,7 @@ static int futex_wait_requeue_pi(u32 __u * the requeue_pi() code acquired for us. */ put_pi_state(q.pi_state); @@ -128,7 +128,7 @@ Signed-off-by: Thomas Gleixner <tglx@linutronix.de> } } else { struct rt_mutex *pi_mutex; -@@ -3231,7 +3277,8 @@ static int futex_wait_requeue_pi(u32 __u +@@ -3288,7 +3334,8 @@ static int futex_wait_requeue_pi(u32 __u pi_mutex = &q.pi_state->pi_mutex; ret = rt_mutex_wait_proxy_lock(pi_mutex, to, &rt_waiter); |