From: Greg Kroah-Hartman Date: Tue, 26 Mar 2019 02:28:56 +0000 (+0900) Subject: 4.4-stable patches X-Git-Tag: v4.9.166~8 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fa6193cf9604bd0fc1d7b862ee36ced618ab3759;p=thirdparty%2Fkernel%2Fstable-queue.git 4.4-stable patches added patches: rtc-fix-overflow-when-converting-time64_t-to-rtc_time.patch --- diff --git a/queue-4.4/rtc-fix-overflow-when-converting-time64_t-to-rtc_time.patch b/queue-4.4/rtc-fix-overflow-when-converting-time64_t-to-rtc_time.patch new file mode 100644 index 00000000000..6b99e7cc1f6 --- /dev/null +++ b/queue-4.4/rtc-fix-overflow-when-converting-time64_t-to-rtc_time.patch @@ -0,0 +1,42 @@ +From 36d46cdb43efea74043e29e2a62b13e9aca31452 Mon Sep 17 00:00:00 2001 +From: Baolin Wang +Date: Mon, 25 Dec 2017 19:10:37 +0800 +Subject: rtc: Fix overflow when converting time64_t to rtc_time + +From: Baolin Wang + +commit 36d46cdb43efea74043e29e2a62b13e9aca31452 upstream. + +If we convert one large time values to rtc_time, in the original formula +'days * 86400' can be overflowed in 'unsigned int' type to make the formula +get one incorrect remain seconds value. Thus we can use div_s64_rem() +function to avoid this situation. + +Signed-off-by: Baolin Wang +Acked-by: Arnd Bergmann +Signed-off-by: Alexandre Belloni +Signed-off-by: Arnd Bergmann +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/rtc/rtc-lib.c | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +--- a/drivers/rtc/rtc-lib.c ++++ b/drivers/rtc/rtc-lib.c +@@ -52,13 +52,11 @@ EXPORT_SYMBOL(rtc_year_days); + */ + void rtc_time64_to_tm(time64_t time, struct rtc_time *tm) + { +- unsigned int month, year; +- unsigned long secs; ++ unsigned int month, year, secs; + int days; + + /* time must be positive */ +- days = div_s64(time, 86400); +- secs = time - (unsigned int) days * 86400; ++ days = div_s64_rem(time, 86400, &secs); + + /* day of the week, 1970-01-01 was a Thursday */ + tm->tm_wday = (days + 4) % 7; diff --git a/queue-4.4/series b/queue-4.4/series index 1e4d36ab969..2fff9e94bf3 100644 --- a/queue-4.4/series +++ b/queue-4.4/series @@ -33,3 +33,4 @@ usb-renesas_usbhs-gadget-fix-unused-but-set-variable-warning.patch serial-sprd-clear-timeout-interrupt-only-rather-than-all-interrupts.patch lib-int_sqrt-optimize-small-argument.patch usb-core-only-clean-up-what-we-allocated.patch +rtc-fix-overflow-when-converting-time64_t-to-rtc_time.patch