Re: [Outreachy kernel] [PATCH v2] firewire: Replace timeval with timespec64

From: Stefan Richter
Date: Thu Nov 05 2015 - 08:35:15 EST


On Oct 22 Arnd Bergmann wrote:
> On Thursday 22 October 2015 04:05:00 Amitoj Kaur Chawla wrote:
> > 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@xxxxxxxxx>
>
> Reviewed-by: Arnd Bergmann <arnd@xxxxxxxx>
>
> (adding the y2038 mailing list as well)

Committed to linux1394.git.
Arnd, do you have special y2038 plans that make it desirable to have this
merged before v4.4? Otherwise I would submit it for v4.5-rc1.

> > Changes in v2:
> > -Replaced timespec with timspec64
> > -Modified commit message
> > -Used ktime_get_real_ts64() instead of getnstimeofday64()
> >
> > drivers/firewire/nosy.c | 10 ++++++----
> > 1 file changed, 6 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/firewire/nosy.c b/drivers/firewire/nosy.c
> > index 76b2d39..8a46077 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;
> >
>

--
Stefan Richter
-=====-===== =-== --=-=
http://arcgraph.de/sr/

Attachment: pgpRx6y7kg6Zp.pgp
Description: OpenPGP digital signature