[PATCH 4.19 83/86] rtc: cmos: Evaluate century appropriate

From: Greg Kroah-Hartman
Date: Mon Feb 07 2022 - 06:25:19 EST


From: Riwen Lu <luriwen@xxxxxxxxxx>

commit ff164ae39b82ee483b24579c8e22a13a8ce5bd04 upstream.

There's limiting the year to 2069. When setting the rtc year to 2070,
reading it returns 1970. Evaluate century starting from 19 to count the
correct year.

$ sudo date -s 20700106
Mon 06 Jan 2070 12:00:00 AM CST
$ sudo hwclock -w
$ sudo hwclock -r
1970-01-06 12:00:49.604968+08:00

Fixes: 2a4daadd4d3e5071 ("rtc: cmos: ignore bogus century byte")

Signed-off-by: Riwen Lu <luriwen@xxxxxxxxxx>
Acked-by: Eric Wong <e@xxxxxxxxx>
Reviewed-by: Mateusz Jończyk <mat.jonczyk@xxxxx>
Signed-off-by: Alexandre Belloni <alexandre.belloni@xxxxxxxxxxx>
Link: https://lore.kernel.org/r/20220106084609.1223688-1-luriwen@xxxxxxxxxx
Signed-off-by: Mateusz Jończyk <mat.jonczyk@xxxxx> # preparation for stable
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>
---
drivers/rtc/rtc-mc146818-lib.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

--- a/drivers/rtc/rtc-mc146818-lib.c
+++ b/drivers/rtc/rtc-mc146818-lib.c
@@ -82,7 +82,7 @@ unsigned int mc146818_get_time(struct rt
time->tm_year += real_year - 72;
#endif

- if (century > 20)
+ if (century > 19)
time->tm_year += (century - 19) * 100;

/*