]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
time/kunit: Document handling of negative years of is_leap()
authorMark Brown <broonie@kernel.org>
Fri, 30 Jan 2026 19:48:35 +0000 (19:48 +0000)
committerThomas Gleixner <tglx@kernel.org>
Mon, 2 Feb 2026 11:37:54 +0000 (12:37 +0100)
The code local is_leap() helper was tried to be replaced by the RTC
is_leap_year() function. Unfortunately the two aren't exactly equivalent,
as the kunit variant uses a signed value for the year and the RTC an
unsigned one.

Since the KUnit tests cover a 16000 year range around the epoch they use
year values that are very comfortably negative and hence get mishandled
when passed into is_leap_year().

The change was reverted, so add a comment which prevents further attempts
to do so.

[ tglx: Adapted to the revert ]

Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Link: https://patch.msgid.link/20260130-kunit-fix-leap-year-v1-1-92ddf55dffd7@kernel.org
kernel/time/time_test.c

index 2889763165e5f36274b77131ac2f2809ec5f0efc..1b99180da2881808019bb7b7fa491f280f12315a 100644 (file)
@@ -4,7 +4,9 @@
 #include <linux/time.h>
 
 /*
- * Traditional implementation of leap year evaluation.
+ * Traditional implementation of leap year evaluation, but note that long
+ * is a signed type and the tests do cover negative year values. So this
+ * can't use the is_leap_year() helper from rtc.h.
  */
 static bool is_leap(long year)
 {