mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Maoyi Xie <maoyixie.tju@gmail.com>
To: Thomas Gleixner <tglx@kernel.org>,
	Anna-Maria Behnsen <anna-maria@linutronix.de>,
	Frederic Weisbecker <frederic@kernel.org>,
	Elizabeth Figura <zfigura@codeweavers.com>,
	Arnd Bergmann <arnd@arndb.de>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: linux-kernel@vger.kernel.org, Maoyi Xie <maoyixie.tju@gmail.com>,
	stable@vger.kernel.org
Subject: [PATCH 2/2] ntsync: honour caller's time namespace for absolute MONOTONIC timeouts
Date: Thu, 28 May 2026 14:33:11 +0800	[thread overview]
Message-ID: <20260528063311.3300393-3-maoyixie.tju@gmail.com> (raw)
In-Reply-To: <20260528063311.3300393-1-maoyixie.tju@gmail.com>

ntsync_schedule() takes the absolute timeout from userspace and hands
it to schedule_hrtimeout_range_clock() with HRTIMER_MODE_ABS. For the
default CLOCK_MONOTONIC path, it does not call timens_ktime_to_host()
first.

A process inside a CLOCK_MONOTONIC time namespace computes the
absolute timeout in its own clock view. The kernel reads the same
value against the host clock. The two differ by the namespace offset.
The timeout then fires too early or too late.

Other consumers of absolute timeouts run the ktime through
timens_ktime_to_host() before hrtimer. Examples are timerfd,
posix-timers, alarmtimer, posix-stubs and futex. ntsync was added
later and missed that step.

/dev/ntsync is mode 0666. Any user inside a time namespace that can
open it is affected. The visible effect is wrong timeout behaviour
for Wine in a container that sets a CLOCK_MONOTONIC offset.

Reproducer: unshare --user --time, set the monotonic offset to -10s,
issue NTSYNC_IOC_WAIT_ANY with a 100 ms absolute MONOTONIC timeout.
The baseline run elapses about 100 ms. The run inside the namespace
elapses about 0 ms.

Apply timens_ktime_to_host() to the parsed timeout when the caller
did not set NTSYNC_WAIT_REALTIME. The helper does nothing in the
initial time namespace, so the fast path is unchanged.

Fixes: b4a7b5fe3f51 ("ntsync: Introduce NTSYNC_IOC_WAIT_ANY.")
Cc: stable@vger.kernel.org # v6.14+
Signed-off-by: Maoyi Xie <maoyixie.tju@gmail.com>
---
 drivers/misc/ntsync.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/drivers/misc/ntsync.c b/drivers/misc/ntsync.c
index 30af282262ef..02c9d1192812 100644
--- a/drivers/misc/ntsync.c
+++ b/drivers/misc/ntsync.c
@@ -19,6 +19,7 @@
 #include <linux/sched/signal.h>
 #include <linux/slab.h>
 #include <linux/spinlock.h>
+#include <linux/time_namespace.h>
 #include <uapi/linux/ntsync.h>
 
 #define NTSYNC_NAME	"ntsync"
@@ -836,6 +837,8 @@ static int ntsync_schedule(const struct ntsync_q *q, const struct ntsync_wait_ar
 
 	if (args->flags & NTSYNC_WAIT_REALTIME)
 		clock = CLOCK_REALTIME;
+	else
+		timeout = timens_ktime_to_host(clock, timeout);
 
 	do {
 		if (signal_pending(current)) {
-- 
2.34.1


  parent reply	other threads:[~2026-05-28  6:33 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-28  6:33 [PATCH 0/2] ntsync: honour time namespace offset in " Maoyi Xie
2026-05-28  6:33 ` [PATCH 1/2] time/namespace: export init_time_ns and do_timens_ktime_to_host Maoyi Xie
2026-06-02 19:08   ` [tip: timers/core] time/namespace: Export init_time_ns and do_timens_ktime_to_host() tip-bot2 for Maoyi Xie
2026-05-28  6:33 ` Maoyi Xie [this message]
2026-06-01 22:12   ` [PATCH 2/2] ntsync: honour caller's time namespace for absolute MONOTONIC timeouts Elizabeth Figura
2026-06-02 19:08   ` [tip: timers/core] ntsync: Honour " tip-bot2 for Maoyi Xie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20260528063311.3300393-3-maoyixie.tju@gmail.com \
    --to=maoyixie.tju@gmail.com \
    --cc=anna-maria@linutronix.de \
    --cc=arnd@arndb.de \
    --cc=frederic@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=stable@vger.kernel.org \
    --cc=tglx@kernel.org \
    --cc=zfigura@codeweavers.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®