summaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorThomas Gleixner <tglx@kernel.org>2026-01-24 00:17:57 +0100
committerThomas Gleixner <tglx@kernel.org>2026-03-12 12:23:27 +0100
commit1432f9d4e8aa2d7585b678bdd0b740597af00d6e (patch)
treea1fc7285883f8c7dc55a5f78b27698228d71adbd /kernel
parent79ccb0693a99e1b91eba95c6bd32a3e02be156ae (diff)
downloadlwn-1432f9d4e8aa2d7585b678bdd0b740597af00d6e.tar.gz
lwn-1432f9d4e8aa2d7585b678bdd0b740597af00d6e.zip
clocksource: Don't use non-continuous clocksources as watchdog
Using a non-continuous aka untrusted clocksource as a watchdog for another untrusted clocksource is equivalent to putting the fox in charge of the henhouse. That's especially true with the jiffies clocksource which depends on interrupt delivery based on a periodic timer. Neither the frequency of that timer is trustworthy nor the kernel's ability to react on it in a timely manner and rearm it if it is not self rearming. Just don't bother to deal with this. It's not worth the trouble and only relevant to museum piece hardware. Signed-off-by: Thomas Gleixner <tglx@kernel.org> Link: https://patch.msgid.link/20260123231521.858743259@kernel.org
Diffstat (limited to 'kernel')
-rw-r--r--kernel/time/clocksource.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/kernel/time/clocksource.c b/kernel/time/clocksource.c
index 3c205447717a..e753a0632ac8 100644
--- a/kernel/time/clocksource.c
+++ b/kernel/time/clocksource.c
@@ -651,6 +651,13 @@ static void clocksource_select_watchdog(bool fallback)
if (cs->flags & CLOCK_SOURCE_MUST_VERIFY)
continue;
+ /*
+ * If it's not continuous, don't put the fox in charge of
+ * the henhouse.
+ */
+ if (!(cs->flags & CLOCK_SOURCE_IS_CONTINUOUS))
+ continue;
+
/* Skip current if we were requested for a fallback. */
if (fallback && cs == old_wd)
continue;