From 340569b5fdc7872dd5b381197917bd8f296698b0 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 28 Feb 2018 13:25:39 +0100 Subject: [PATCH] 4.4-stable patches added patches: hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch --- ...nce-relative-clock_realtime-hrtimers.patch | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 queue-4.4/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch diff --git a/queue-4.4/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch b/queue-4.4/hrtimer-ensure-posix-compliance-relative-clock_realtime-hrtimers.patch new file mode 100644 index 00000000000..0a2250e0fdc --- /dev/null +++ b/queue-4.4/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 +@@ -1139,7 +1139,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); -- 2.47.3