From: Greg Kroah-Hartman Date: Wed, 28 Feb 2018 12:24:28 +0000 (+0100) Subject: 3.18-stable patches X-Git-Tag: v3.18.98~21 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=384eff35e2735d68612c28f4b3a98c0bf9226aac;p=thirdparty%2Fkernel%2Fstable-queue.git 3.18-stable patches added patches: hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch --- diff --git a/queue-3.18/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch b/queue-3.18/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch new file mode 100644 index 00000000000..341eebd6fa3 --- /dev/null +++ b/queue-3.18/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch @@ -0,0 +1,55 @@ +From 48d0c9becc7f3c66874c100c126459a9da0fdced Mon Sep 17 00:00:00 2001 +From: Anna-Maria Gleixner +Date: Thu, 21 Dec 2017 11:41:35 +0100 +Subject: hrtimer: Ensure POSIX compliance (relative CLOCK_REALTIME hrtimers) + +From: Anna-Maria Gleixner + +commit 48d0c9becc7f3c66874c100c126459a9da0fdced upstream. + +The POSIX specification defines that relative CLOCK_REALTIME timers are not +affected by clock modifications. Those timers have to use CLOCK_MONOTONIC +to ensure POSIX compliance. + +The introduction of the additional HRTIMER_MODE_PINNED mode broke this +requirement for pinned timers. + +There is no user space visible impact because user space timers are not +using pinned mode, but for consistency reasons this needs to be fixed. + +Check whether the mode has the HRTIMER_MODE_REL bit set instead of +comparing with HRTIMER_MODE_ABS. + +Signed-off-by: Anna-Maria Gleixner +Cc: Christoph Hellwig +Cc: John Stultz +Cc: Linus Torvalds +Cc: Peter Zijlstra +Cc: Thomas Gleixner +Cc: keescook@chromium.org +Fixes: 597d0275736d ("timers: Framework for identifying pinned timers") +Link: http://lkml.kernel.org/r/20171221104205.7269-7-anna-maria@linutronix.de +Signed-off-by: Ingo Molnar +Cc: Mike Galbraith +Signed-off-by: Greg Kroah-Hartman + +--- + kernel/time/hrtimer.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/kernel/time/hrtimer.c ++++ b/kernel/time/hrtimer.c +@@ -1149,7 +1149,12 @@ static void __hrtimer_init(struct hrtime + + cpu_base = raw_cpu_ptr(&hrtimer_bases); + +- if (clock_id == CLOCK_REALTIME && mode != HRTIMER_MODE_ABS) ++ /* ++ * POSIX magic: Relative CLOCK_REALTIME timers are not affected by ++ * clock modifications, so they needs to become CLOCK_MONOTONIC to ++ * ensure POSIX compliance. ++ */ ++ if (clock_id == CLOCK_REALTIME && mode & HRTIMER_MODE_REL) + clock_id = CLOCK_MONOTONIC; + + base = hrtimer_clockid_to_base(clock_id); diff --git a/queue-3.18/series b/queue-3.18/series index e4dff3eae94..ba7f03e895b 100644 --- a/queue-3.18/series +++ b/queue-3.18/series @@ -1 +1,2 @@ ipv6-skip-xfrm-lookup-if-dst_entry-in-socket-cache-is-valid.patch +hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch diff --git a/queue-4.14/series b/queue-4.14/series new file mode 100644 index 00000000000..abaef70c6f0 --- /dev/null +++ b/queue-4.14/series @@ -0,0 +1 @@ +hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch diff --git a/queue-4.15/series b/queue-4.15/series index 40f36c3ec0d..09fcb2a96ac 100644 --- a/queue-4.15/series +++ b/queue-4.15/series @@ -1 +1,2 @@ vsprintf-avoid-misleading-null-for-px.patch +hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch diff --git a/queue-4.4/series b/queue-4.4/series new file mode 100644 index 00000000000..abaef70c6f0 --- /dev/null +++ b/queue-4.4/series @@ -0,0 +1 @@ +hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch diff --git a/queue-4.9/series b/queue-4.9/series new file mode 100644 index 00000000000..abaef70c6f0 --- /dev/null +++ b/queue-4.9/series @@ -0,0 +1 @@ +hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch