lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <3432361.tg4OvfJSmN@wuerfel>
Date:	Mon, 21 Mar 2016 20:55:16 +0100
From:	Arnd Bergmann <arnd@...db.de>
To:	Tina Ruchandani <ruchandani.tina@...il.com>
Cc:	y2038@...ts.linaro.org, Stefan Richter <stefanr@...6.in-berlin.de>,
	linux1394-devel@...ts.sourceforge.net, linux-kernel@...r.kernel.org
Subject: Re: [PATCH] firewire: nosy: Replace timeval with timespec64

On Sunday 20 March 2016 22:59:11 Tina Ruchandani wrote:
> '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@...il.com>
> ---
>  drivers/firewire/nosy.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)

The patch looks correct to me, but it seems the same one has
just been merged into mainline Linux on Saturday (the patch
was posted back in October).

commit 2ae4b6b20e2004dccf80d804ae52b073377c2f5b
Author: Amitoj Kaur Chawla <amitoj1606@...il.com>
Date:   Thu Oct 22 04:05:00 2015 +0530

    firewire: nosy: Replace timeval with timespec64
    
    32 bit systems using 'struct timeval' will break in the year 2038, so
    we replace the code appropriately. However, this driver is not broken
    in 2038 since we are using only the microseconds portion of the
    current time.
    
    This patch replaces timeval with timespec64.
    
    Signed-off-by: Amitoj Kaur Chawla <amitoj1606@...il.com>
    Reviewed-by: Arnd Bergmann <arnd@...db.de>
    Signed-off-by: Stefan Richter <stefanr@...6.in-berlin.de>

diff --git a/drivers/firewire/nosy.c b/drivers/firewire/nosy.c
index 76b2d390f6ec..8a46077129ac 100644
--- a/drivers/firewire/nosy.c
+++ b/drivers/firewire/nosy.c
@@ -33,6 +33,7 @@
 #include <linux/sched.h> /* required for linux/wait.h */
 #include <linux/slab.h>
 #include <linux/spinlock.h>
+#include <linux/time64.h>
 #include <linux/timex.h>
 #include <linux/uaccess.h>
 #include <linux/wait.h>
@@ -413,17 +414,18 @@ static void
 packet_irq_handler(struct pcilynx *lynx)
 {
 	struct client *client;
-	u32 tcode_mask, tcode;
+	u32 tcode_mask, tcode, timestamp;
 	size_t length;
-	struct timeval tv;
+	struct timespec64 ts64;
 
 	/* FIXME: Also report rcv_speed. */
 
 	length = __le32_to_cpu(lynx->rcv_pcl->pcl_status) & 0x00001fff;
 	tcode  = __le32_to_cpu(lynx->rcv_buffer[1]) >> 4 & 0xf;
 
-	do_gettimeofday(&tv);
-	lynx->rcv_buffer[0] = (__force __le32)tv.tv_usec;
+	ktime_get_real_ts64(&ts64);
+	timestamp = ts64.tv_nsec / NSEC_PER_USEC;
+	lynx->rcv_buffer[0] = (__force __le32)timestamp;
 
 	if (length == PHY_PACKET_SIZE)
 		tcode_mask = 1 << TCODE_PHY_PACKET;

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ