* [PATCH] firewire: nosy: Replace timeval with timespec64
@ 2016-03-21 5:59 Tina Ruchandani
2016-03-21 19:55 ` Arnd Bergmann
0 siblings, 1 reply; 5+ messages in thread
From: Tina Ruchandani @ 2016-03-21 5:59 UTC (permalink / raw)
To: y2038; +Cc: Stefan Richter, linux1394-devel, linux-kernel, arnd
'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>
---
drivers/firewire/nosy.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/firewire/nosy.c b/drivers/firewire/nosy.c
index 8a46077..631c977 100644
--- a/drivers/firewire/nosy.c
+++ b/drivers/firewire/nosy.c
@@ -446,14 +446,16 @@ static void
bus_reset_irq_handler(struct pcilynx *lynx)
{
struct client *client;
- struct timeval tv;
+ struct timespec64 ts64;
+ u32 timestamp;
- do_gettimeofday(&tv);
+ ktime_get_real_ts64(&ts64);
+ timestamp = ts64.tv_nsec / NSEC_PER_USEC;
spin_lock(&lynx->client_list_lock);
list_for_each_entry(client, &lynx->client_list, link)
- packet_buffer_put(&client->buffer, &tv.tv_usec, 4);
+ packet_buffer_put(&client->buffer, ×tamp, 4);
spin_unlock(&lynx->client_list_lock);
}
--
2.8.0.rc3.226.g39d4020
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] firewire: nosy: Replace timeval with timespec64
2016-03-21 5:59 [PATCH] firewire: nosy: Replace timeval with timespec64 Tina Ruchandani
@ 2016-03-21 19:55 ` Arnd Bergmann
2016-03-21 20:19 ` Stefan Richter
0 siblings, 1 reply; 5+ messages in thread
From: Arnd Bergmann @ 2016-03-21 19:55 UTC (permalink / raw)
To: Tina Ruchandani; +Cc: y2038, Stefan Richter, linux1394-devel, linux-kernel
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@gmail.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@gmail.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@gmail.com>
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Signed-off-by: Stefan Richter <stefanr@s5r6.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;
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] firewire: nosy: Replace timeval with timespec64
2016-03-21 19:55 ` Arnd Bergmann
@ 2016-03-21 20:19 ` Stefan Richter
2016-03-21 21:36 ` Arnd Bergmann
0 siblings, 1 reply; 5+ messages in thread
From: Stefan Richter @ 2016-03-21 20:19 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: Tina Ruchandani, y2038, linux1394-devel, linux-kernel
On Mar 21 Arnd Bergmann wrote:
> 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@gmail.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
[...]
No, Amitoj's patch from October changed nosy.c::packet_irq_hander, whereas
Tina' patch changes nosy.c::bus_reset_irq_handler. IOW the new patch
completes what the former patch (and us reviewers) missed.
--
Stefan Richter
-======----- --== =-=-=
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] firewire: nosy: Replace timeval with timespec64
2016-03-21 20:19 ` Stefan Richter
@ 2016-03-21 21:36 ` Arnd Bergmann
2016-03-22 14:27 ` Stefan Richter
0 siblings, 1 reply; 5+ messages in thread
From: Arnd Bergmann @ 2016-03-21 21:36 UTC (permalink / raw)
To: Stefan Richter; +Cc: Tina Ruchandani, y2038, linux1394-devel, linux-kernel
On Monday 21 March 2016 21:19:17 Stefan Richter wrote:
> On Mar 21 Arnd Bergmann wrote:
> > 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@gmail.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
> [...]
>
> No, Amitoj's patch from October changed nosy.c::packet_irq_hander, whereas
> Tina' patch changes nosy.c::bus_reset_irq_handler. IOW the new patch
> completes what the former patch (and us reviewers) missed.
>
Ah, I see. Sorry for my confusion.
Reviewed-by: Arnd Bergmann <arnd@arndb.de>
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] firewire: nosy: Replace timeval with timespec64
2016-03-21 21:36 ` Arnd Bergmann
@ 2016-03-22 14:27 ` Stefan Richter
0 siblings, 0 replies; 5+ messages in thread
From: Stefan Richter @ 2016-03-22 14:27 UTC (permalink / raw)
To: Arnd Bergmann; +Cc: Tina Ruchandani, y2038, linux1394-devel, linux-kernel
On Mar 21 Arnd Bergmann wrote:
>>> 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@gmail.com>
[...]
> Reviewed-by: Arnd Bergmann <arnd@arndb.de>
Committed to linux1394.git.
I will try to get this pulled upstream in the next few days.
--
Stefan Richter
-======----- --== =-==-
http://arcgraph.de/sr/
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2016-03-22 14:28 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-03-21 5:59 [PATCH] firewire: nosy: Replace timeval with timespec64 Tina Ruchandani
2016-03-21 19:55 ` Arnd Bergmann
2016-03-21 20:19 ` Stefan Richter
2016-03-21 21:36 ` Arnd Bergmann
2016-03-22 14:27 ` Stefan Richter
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox