linux-hardened/arch/powerpc/platforms
Daniel Axtens 00b912b0c8 powerpc: Remove broken GregorianDay()
GregorianDay() is supposed to calculate the day of the week
(tm->tm_wday) for a given day/month/year. In that calcuation it
indexed into an array called MonthOffset using tm->tm_mon-1. However
tm_mon is zero-based, not one-based, so this is off-by-one. It also
means that every January, GregoiranDay() will access element -1 of
the MonthOffset array.

It also doesn't appear to be a correct algorithm either: see in
contrast kernel/time/timeconv.c's time_to_tm function.

It's been broken forever, which suggests no-one in userland uses
this. It looks like no-one in the kernel uses tm->tm_wday either
(see e.g. drivers/rtc/rtc-ds1305.c:319).

tm->tm_wday is conventionally set to -1 when not available in
hardware so we can simply set it to -1 and drop the function.
(There are over a dozen other drivers in drivers/rtc that do
this.)

Found using UBSAN.

Cc: Andrey Ryabinin <aryabinin@virtuozzo.com>
Cc: Andrew Morton <akpm@linux-foundation.org> # as an example of what UBSan finds.
Cc: Alessandro Zummo <a.zummo@towertech.it>
Cc: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Cc: rtc-linux@googlegroups.com
Signed-off-by: Daniel Axtens <dja@axtens.net>
Acked-by: Alexandre Belloni <alexandre.belloni@free-electrons.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-12-16 12:54:04 +11:00
..
8xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
40x powerpc: make of_device_ids const 2014-09-25 23:14:46 +10:00
44x powerpc/44x/Akebono: Remove select of IBM_EMAC_RGMII_WOL 2014-12-29 15:45:44 +11:00
52xx powerpc: Introduce the use of the managed version of kzalloc 2015-10-22 16:13:23 +02:00
82xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
83xx powerpc: don't use module_init in non-modular 83xx suspend code 2015-06-16 14:12:29 -04:00
85xx Merge branch 'clock' into HEAD 2015-10-27 18:14:16 -05:00
86xx Merge branch 'clock' into HEAD 2015-10-27 18:14:16 -05:00
512x powerpc/512x: add LocalPlus Bus FIFO device driver 2015-10-22 15:19:40 +02:00
amigaone lib/scatterlist: make ARCH_HAS_SG_CHAIN an actual Kconfig 2014-08-08 15:57:26 -07:00
cell powerpc/cell: Remove the Cell QPACE code 2015-12-14 20:41:50 +11:00
chrp genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
embedded6xx genirq: Remove irq argument from irq flow handlers 2015-09-16 15:47:51 +02:00
maple powerpc: Remove broken GregorianDay() 2015-12-16 12:54:04 +11:00
pasemi powerpc updates for 4.4 2015-11-05 23:38:43 -08:00
powermac powerpc/powermac: set IRQF_NO_THREAD for xmon/cascade handlers 2015-11-26 22:11:05 +11:00
powernv powerpc: Remove broken GregorianDay() 2015-12-16 12:54:04 +11:00
ps3 powerpc updates for 4.4 2015-11-05 23:38:43 -08:00
pseries powerpc/pseries: Limit EPOW reset event warnings 2015-12-14 20:41:49 +11:00
fsl_uli1575.c of/irq: Refactor interrupt-map parsing 2013-10-24 11:43:04 +01:00
Kconfig powerpc: Remove the celleb support 2015-04-07 17:15:13 +10:00
Kconfig.cputype powerpc/cell: Drop CONFIG_TUNE_CELL in favour of CONFIG_CELL_CPU 2015-10-19 19:51:18 +11:00
Makefile powerpc: Remove platforms/wsp and associated pieces 2014-06-11 16:35:38 +10:00