Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

firewire: nosy: Replace timeval with timespec64

'struct timeval' uses a 32 bit field for its 'seconds' value which
will overflow in year 2038 and beyond. This patch replaces the use
of timeval in nosy.c with timespec64 which doesn't suffer from y2038
issue. The code is correct as is - since it is only using the
microseconds portion of timeval. However, this patch does the
replacement as part of a larger effort to remove all instances of
'struct timeval' from the kernel (that would help identify cases
where the code is actually broken).

Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.in-berlin.de>

authored by

Tina Ruchandani and committed by
Stefan Richter
384fbb96 e38e5ce8

+5 -3
+5 -3
drivers/firewire/nosy.c
··· 446 446 bus_reset_irq_handler(struct pcilynx *lynx) 447 447 { 448 448 struct client *client; 449 - struct timeval tv; 449 + struct timespec64 ts64; 450 + u32 timestamp; 450 451 451 - do_gettimeofday(&tv); 452 + ktime_get_real_ts64(&ts64); 453 + timestamp = ts64.tv_nsec / NSEC_PER_USEC; 452 454 453 455 spin_lock(&lynx->client_list_lock); 454 456 455 457 list_for_each_entry(client, &lynx->client_list, link) 456 - packet_buffer_put(&client->buffer, &tv.tv_usec, 4); 458 + packet_buffer_put(&client->buffer, &timestamp, 4); 457 459 458 460 spin_unlock(&lynx->client_list_lock); 459 461 }