linux/include
Lukas Hannen 39ff83f2f6 time: Handle negative seconds correctly in timespec64_to_ns()
timespec64_ns() prevents multiplication overflows by comparing the seconds
value of the timespec to KTIME_SEC_MAX. If the value is greater or equal it
returns KTIME_MAX.

But that check casts the signed seconds value to unsigned which makes the
comparision true for all negative values and therefore return wrongly
KTIME_MAX.

Negative second values are perfectly valid and required in some places,
e.g. ptp_clock_adjtime().

Remove the cast and add a check for the negative boundary which is required
to prevent undefined behaviour due to multiplication underflow.

Fixes: cb47755725 ("time: Prevent undefined behaviour in timespec64_to_ns()")'
Signed-off-by: Lukas Hannen <lukas.hannen@opensource.tttech-industrial.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/AM6PR01MB541637BD6F336B8FFB72AF80EEC69@AM6PR01MB5416.eurprd01.prod.exchangelabs.com
2021-09-08 17:44:26 +02:00
..
acpi
asm-generic Linux 5.14-rc6 2021-08-17 16:16:29 +02:00
clocksource
crypto Merge branch 'linus' of git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2021-08-30 12:57:10 -07:00
drm
dt-bindings Updates for timekeeping, timers and related drivers: 2021-08-30 15:31:33 -07:00
keys
kunit
kvm
linux time: Handle negative seconds correctly in timespec64_to_ns() 2021-09-08 17:44:26 +02:00
math-emu
media
memory
misc
net ipv6: correct comments about fib6_node sernum 2021-08-24 09:59:01 +01:00
pcmcia
ras
rdma
scsi
soc
sound
target
trace mmflags.h: add missing __GFP_ZEROTAGS and __GFP_SKIP_KASAN_POISON names 2021-08-20 11:31:42 -07:00
uapi A reworked version of the opt-in L1D flush mechanism: 2021-08-30 15:00:33 -07:00
vdso
video
xen