summaryrefslogtreecommitdiffstats
path: root/debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch
diff options
context:
space:
mode:
authorRomain Perier <romain.perier@gmail.com>2019-08-27 17:07:45 +0200
committerRomain Perier <romain.perier@opensource.viveris.fr>2019-08-27 17:08:08 +0200
commit23d5ad8d5f3c53402d4deff0405b99764d6d6f26 (patch)
tree0ff5e42af6e127a5f14fb0c4d068ae03c8ba2ba4 /debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch
parent1aed09ad6e2763da9fabb4f9d1e37a22a9c3bb4a (diff)
downloadlinux-debian-23d5ad8d5f3c53402d4deff0405b99764d6d6f26.tar.gz
[rt] Update to 5.2.10-rt5
Diffstat (limited to 'debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch')
-rw-r--r--debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch b/debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch
new file mode 100644
index 000000000..d4fe9b0a8
--- /dev/null
+++ b/debian/patches-rt/0001-hrtimer-Use-READ_ONCE-to-access-timer-base-in-hrimer.patch
@@ -0,0 +1,33 @@
+From: Julien Grall <julien.grall@arm.com>
+Date: Wed, 21 Aug 2019 10:24:07 +0100
+Subject: [PATCH 1/3] hrtimer: Use READ_ONCE to access timer->base in
+ hrimer_grab_expiry_lock()
+Origin: https://www.kernel.org/pub/linux/kernel/projects/rt/5.2/older/patches-5.2.10-rt5.tar.xz
+
+The update to timer->base is protected by the base->cpu_base->lock().
+However, hrtimer_grab_expirty_lock() does not access it with the lock.
+
+So it would theorically be possible to have timer->base changed under
+our feet. We need to prevent the compiler to refetch timer->base so the
+check and the access is performed on the same base.
+
+Other access of timer->base are either done with a lock or protected
+with READ_ONCE(). So use READ_ONCE() in hrtimer_grab_expirty_lock().
+
+Signed-off-by: Julien Grall <julien.grall@arm.com>
+Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
+---
+ kernel/time/hrtimer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/kernel/time/hrtimer.c
++++ b/kernel/time/hrtimer.c
+@@ -932,7 +932,7 @@ EXPORT_SYMBOL_GPL(hrtimer_forward);
+
+ void hrtimer_grab_expiry_lock(const struct hrtimer *timer)
+ {
+- struct hrtimer_clock_base *base = timer->base;
++ struct hrtimer_clock_base *base = READ_ONCE(timer->base);
+
+ if (base && base->cpu_base) {
+ spin_lock(&base->cpu_base->softirq_expiry_lock);