From mboxrd@z Thu Jan 1 00:00:00 1970 From: Dmitry Safonov Subject: [PATCHv3 06/27] posix-timers/timens: Take into account clock offsets Date: Thu, 25 Apr 2019 17:13:55 +0100 Message-ID: <20190425161416.26600-7-dima@arista.com> References: <20190425161416.26600-1-dima@arista.com> Mime-Version: 1.0 Content-Transfer-Encoding: 8bit Return-path: In-Reply-To: <20190425161416.26600-1-dima@arista.com> Sender: linux-kernel-owner@vger.kernel.org To: linux-kernel@vger.kernel.org Cc: Andrei Vagin , Dmitry Safonov , Adrian Reber , Andrei Vagin , Andy Lutomirski , Arnd Bergmann , Christian Brauner , Cyrill Gorcunov , Dmitry Safonov <0x7f454c46@gmail.com>, "Eric W. Biederman" , "H. Peter Anvin" , Ingo Molnar , Jeff Dike , Oleg Nesterov , Pavel Emelyanov , Shuah Khan , Thomas Gleixner , Vincenzo Frascino , containers@lists.linux-foundation.org, criu@openvz.org, linux-api@vger.kernel.org, x86@kernel.org List-Id: linux-api@vger.kernel.org From: Andrei Vagin Wire timer_settime() syscall into time namespace virtualization. Signed-off-by: Andrei Vagin Signed-off-by: Dmitry Safonov --- kernel/time/alarmtimer.c | 3 +++ kernel/time/posix-timers.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/kernel/time/alarmtimer.c b/kernel/time/alarmtimer.c index 31f99361342e..23f5c39c8d23 100644 --- a/kernel/time/alarmtimer.c +++ b/kernel/time/alarmtimer.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "posix-timers.h" @@ -621,6 +622,8 @@ static void alarm_timer_arm(struct k_itimer *timr, ktime_t expires, if (!absolute) expires = ktime_add_safe(expires, base->gettime()); + else + expires = timens_ktime_to_host(base->base_clockid, expires); if (sigev_none) alarm->node.expires = expires; else diff --git a/kernel/time/posix-timers.c b/kernel/time/posix-timers.c index a723e63d55fd..7922731f98cd 100644 --- a/kernel/time/posix-timers.c +++ b/kernel/time/posix-timers.c @@ -803,6 +803,8 @@ static void common_hrtimer_arm(struct k_itimer *timr, ktime_t expires, if (!absolute) expires = ktime_add_safe(expires, timer->base->get_time()); + else + expires = timens_ktime_to_host(timer->base->clockid, expires); hrtimer_set_expires(timer, expires); if (!sigev_none) -- 2.21.0