linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
@ 2016-04-13  6:09 Tina Ruchandani
  2016-04-13  8:38 ` Johannes Berg
  2016-04-26  9:10 ` [v3] " Kalle Valo
  0 siblings, 2 replies; 9+ messages in thread
From: Tina Ruchandani @ 2016-04-13  6:09 UTC (permalink / raw)
  To: Arnd Bergmann; +Cc: y2038, linux-kernel, linux-wireless, netdev

'struct timeval' uses a 32-bit seconds field which will overflow in
year 2038 and beyond. This patch is part of a larger effort to remove
all instances of 'struct timeval' from the kernel and replace them
with 64-bit timekeeping variables.
The patch also fixes the debug printf specifier to avoid the
seconds value being truncated.
The patch was build-tested / debugged by removing the
"if VERBOSE > SHOW_ERROR_MESSAGES" guards.

Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
Suggested-by: Arnd Bergmann <arnd@arndb.de>
--
Changes in v3:
 Fix commit message
Changes in v2:
 Changed printf specifier as suggested by Arnd Bergmann to
avoid truncation.
---
 drivers/net/wireless/intersil/prism54/isl_38xx.c | 35 ++++++++++++------------
 1 file changed, 18 insertions(+), 17 deletions(-)

diff --git a/drivers/net/wireless/intersil/prism54/isl_38xx.c b/drivers/net/wireless/intersil/prism54/isl_38xx.c
index 333c1a2..6700387 100644
--- a/drivers/net/wireless/intersil/prism54/isl_38xx.c
+++ b/drivers/net/wireless/intersil/prism54/isl_38xx.c
@@ -19,6 +19,7 @@
 #include <linux/module.h>
 #include <linux/types.h>
 #include <linux/delay.h>
+#include <linux/ktime.h>

 #include <asm/uaccess.h>
 #include <asm/io.h>
@@ -113,7 +114,7 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)

 #if VERBOSE > SHOW_ERROR_MESSAGES
 	u32 counter = 0;
-	struct timeval current_time;
+	struct timespec64 current_ts64;
 	DEBUG(SHOW_FUNCTION_CALLS, "isl38xx trigger device\n");
 #endif

@@ -121,22 +122,22 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)
 	if (asleep) {
 		/* device is in powersave, trigger the device for wakeup */
 #if VERBOSE > SHOW_ERROR_MESSAGES
-		do_gettimeofday(&current_time);
-		DEBUG(SHOW_TRACING, "%08li.%08li Device wakeup triggered\n",
-		      current_time.tv_sec, (long)current_time.tv_usec);
+		ktime_get_real_ts64(&current_ts64);
+		DEBUG(SHOW_TRACING, "%lld.%09ld Device wakeup triggered\n",
+		      (s64)current_ts64.tv_sec, current_ts64.tv_nsec);

-		DEBUG(SHOW_TRACING, "%08li.%08li Device register read %08x\n",
-		      current_time.tv_sec, (long)current_time.tv_usec,
+		DEBUG(SHOW_TRACING, "%lld.%09ld Device register read %08x\n",
+		      (s64)current_ts64.tv_sec, current_ts64.tv_nsec,
 		      readl(device_base + ISL38XX_CTRL_STAT_REG));
 #endif

 		reg = readl(device_base + ISL38XX_INT_IDENT_REG);
 		if (reg == 0xabadface) {
 #if VERBOSE > SHOW_ERROR_MESSAGES
-			do_gettimeofday(&current_time);
+			ktime_get_real_ts64(&current_ts64);
 			DEBUG(SHOW_TRACING,
-			      "%08li.%08li Device register abadface\n",
-			      current_time.tv_sec, (long)current_time.tv_usec);
+			      "%lld.%09ld Device register abadface\n",
+			      (s64)current_ts64.tv_sec, current_ts64.tv_nsec);
 #endif
 			/* read the Device Status Register until Sleepmode bit is set */
 			while (reg = readl(device_base + ISL38XX_CTRL_STAT_REG),
@@ -149,13 +150,13 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)

 #if VERBOSE > SHOW_ERROR_MESSAGES
 			DEBUG(SHOW_TRACING,
-			      "%08li.%08li Device register read %08x\n",
-			      current_time.tv_sec, (long)current_time.tv_usec,
+			      "%lld.%09ld Device register read %08x\n",
+			      (s64)current_ts64.tv_sec, current_ts64.tv_nsec,
 			      readl(device_base + ISL38XX_CTRL_STAT_REG));
-			do_gettimeofday(&current_time);
+			ktime_get_real_ts64(&current_ts64);
 			DEBUG(SHOW_TRACING,
-			      "%08li.%08li Device asleep counter %i\n",
-			      current_time.tv_sec, (long)current_time.tv_usec,
+			      "%lld.%09ld Device asleep counter %i\n",
+			      (s64)current_ts64.tv_sec, current_ts64.tv_nsec,
 			      counter);
 #endif
 		}
@@ -168,9 +169,9 @@ isl38xx_trigger_device(int asleep, void __iomem *device_base)

 		/* perform another read on the Device Status Register */
 		reg = readl(device_base + ISL38XX_CTRL_STAT_REG);
-		do_gettimeofday(&current_time);
-		DEBUG(SHOW_TRACING, "%08li.%08li Device register read %08x\n",
-		      current_time.tv_sec, (long)current_time.tv_usec, reg);
+		ktime_get_real_ts64(&current_ts64);
+		DEBUG(SHOW_TRACING, "%lld.%00ld Device register read %08x\n",
+		      (s64)current_ts64.tv_sec, current_ts64.tv_nsec, reg);
 #endif
 	} else {
 		/* device is (still) awake  */
--
2.8.0.rc3.226.g39d4020

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-13  6:09 [PATCH v3] prism54: isl_38xx: Replace 'struct timeval' Tina Ruchandani
@ 2016-04-13  8:38 ` Johannes Berg
  2016-04-13  9:45   ` Arend Van Spriel
  2016-04-16 23:34   ` Arnd Bergmann
  2016-04-26  9:10 ` [v3] " Kalle Valo
  1 sibling, 2 replies; 9+ messages in thread
From: Johannes Berg @ 2016-04-13  8:38 UTC (permalink / raw)
  To: Tina Ruchandani, Arnd Bergmann
  Cc: y2038, linux-kernel, linux-wireless, netdev


> The patch was build-tested / debugged by removing the
> "if VERBOSE > SHOW_ERROR_MESSAGES" guards.

Stands to reason that we should just remove the (more or less) dead
code, since I don't think anyone really ever touches this driver any
more or will ever again ...

johannes

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-13  8:38 ` Johannes Berg
@ 2016-04-13  9:45   ` Arend Van Spriel
  2016-04-16 23:34   ` Arnd Bergmann
  1 sibling, 0 replies; 9+ messages in thread
From: Arend Van Spriel @ 2016-04-13  9:45 UTC (permalink / raw)
  To: Johannes Berg, Tina Ruchandani, Arnd Bergmann
  Cc: y2038, linux-kernel, linux-wireless, netdev

On 13-4-2016 10:38, Johannes Berg wrote:
> 
>> The patch was build-tested / debugged by removing the
>> "if VERBOSE > SHOW_ERROR_MESSAGES" guards.
> 
> Stands to reason that we should just remove the (more or less) dead
> code, since I don't think anyone really ever touches this driver any
> more or will ever again ...

It does bring back memories from my Intersil/Globespan/Conexant day(s),
but not sentimental enough to touch the prism54 driver.

Gr. AvS

> johannes
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-13  8:38 ` Johannes Berg
  2016-04-13  9:45   ` Arend Van Spriel
@ 2016-04-16 23:34   ` Arnd Bergmann
  2016-04-17 12:42     ` Johannes Berg
  1 sibling, 1 reply; 9+ messages in thread
From: Arnd Bergmann @ 2016-04-16 23:34 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Tina Ruchandani, y2038, linux-kernel, linux-wireless, netdev

On Wednesday 13 April 2016 10:38:26 Johannes Berg wrote:
> > The patch was build-tested / debugged by removing the
> > "if VERBOSE > SHOW_ERROR_MESSAGES" guards.
> 
> Stands to reason that we should just remove the (more or less) dead
> code, since I don't think anyone really ever touches this driver any
> more or will ever again ...

Do you mean removing all DEBUG() statements from the driver, or
removing the entire driver?

	Arnd

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-16 23:34   ` Arnd Bergmann
@ 2016-04-17 12:42     ` Johannes Berg
  2016-04-17 22:10       ` Arnd Bergmann
  0 siblings, 1 reply; 9+ messages in thread
From: Johannes Berg @ 2016-04-17 12:42 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Tina Ruchandani, y2038, linux-kernel, linux-wireless, netdev

On Sun, 2016-04-17 at 01:34 +0200, Arnd Bergmann wrote:
> On Wednesday 13 April 2016 10:38:26 Johannes Berg wrote:
> > 
> > > 
> > > The patch was build-tested / debugged by removing the
> > > "if VERBOSE > SHOW_ERROR_MESSAGES" guards.
> > Stands to reason that we should just remove the (more or less) dead
> > code, since I don't think anyone really ever touches this driver
> > any
> > more or will ever again ...
> Do you mean removing all DEBUG() statements from the driver, or
> removing the entire driver?
> 

We tried removing the driver once, since p54 supposedly drives the same
hardware, but some people had certain use cases that didn't work there,
apparently.

I was thinking more restrictively of just the stuff that can't even be
built without modifying the sources - like the "#if VERBOSE" thing.

johannes

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-17 12:42     ` Johannes Berg
@ 2016-04-17 22:10       ` Arnd Bergmann
  2016-04-19  8:57         ` Johannes Berg
  0 siblings, 1 reply; 9+ messages in thread
From: Arnd Bergmann @ 2016-04-17 22:10 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Tina Ruchandani, y2038, linux-kernel, linux-wireless, netdev

On Sunday 17 April 2016 14:42:33 Johannes Berg wrote:
> 
> I was thinking more restrictively of just the stuff that can't even be
> built without modifying the sources - like the "#if VERBOSE" thing.

All the DEBUG() statements are inside of this kind of check, so if we
remove the #ifdefs, it would be logical to remove the rest of the debugging
infrastructure (DEBUG() macros, SHOW_*, pc_debug, maybe more) as well.

	Arnd

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-17 22:10       ` Arnd Bergmann
@ 2016-04-19  8:57         ` Johannes Berg
  2016-04-22 18:09           ` Kalle Valo
  0 siblings, 1 reply; 9+ messages in thread
From: Johannes Berg @ 2016-04-19  8:57 UTC (permalink / raw)
  To: Arnd Bergmann
  Cc: Tina Ruchandani, y2038, linux-kernel, linux-wireless, netdev,
	Luis R. Rodriguez

On Mon, 2016-04-18 at 00:10 +0200, Arnd Bergmann wrote:
> On Sunday 17 April 2016 14:42:33 Johannes Berg wrote:
> > 
> > 
> > I was thinking more restrictively of just the stuff that can't even
> > be
> > built without modifying the sources - like the "#if VERBOSE" thing.
> All the DEBUG() statements are inside of this kind of check, so if we
> remove the #ifdefs, it would be logical to remove the rest of the
> debugging infrastructure (DEBUG() macros, SHOW_*, pc_debug, maybe
> more) as well.
> 

Seems reasonable.

Maybe we should Cc the maintainer, but I suspect that since the driver
is marked Obsolete anyway Luis won't care either :)

johannes

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-19  8:57         ` Johannes Berg
@ 2016-04-22 18:09           ` Kalle Valo
  0 siblings, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2016-04-22 18:09 UTC (permalink / raw)
  To: Johannes Berg
  Cc: Arnd Bergmann, Tina Ruchandani, y2038, linux-kernel,
	linux-wireless, netdev, Luis R. Rodriguez

Johannes Berg <johannes@sipsolutions.net> writes:

> On Mon, 2016-04-18 at 00:10 +0200, Arnd Bergmann wrote:
>> On Sunday 17 April 2016 14:42:33 Johannes Berg wrote:
>> > 
>> > I was thinking more restrictively of just the stuff that can't even
>> > be built without modifying the sources - like the "#if VERBOSE"
>> > thing.
>>
>> All the DEBUG() statements are inside of this kind of check, so if we
>> remove the #ifdefs, it would be logical to remove the rest of the
>> debugging infrastructure (DEBUG() macros, SHOW_*, pc_debug, maybe
>> more) as well.
>
> Seems reasonable.
>
> Maybe we should Cc the maintainer, but I suspect that since the driver
> is marked Obsolete anyway Luis won't care either :)

I'm planning to apply this patch anyway, the debugging infrastructure
removal can be a followup patch. But please let me know if I should drop
this instead.

-- 
Kalle Valo

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [v3] prism54: isl_38xx: Replace 'struct timeval'
  2016-04-13  6:09 [PATCH v3] prism54: isl_38xx: Replace 'struct timeval' Tina Ruchandani
  2016-04-13  8:38 ` Johannes Berg
@ 2016-04-26  9:10 ` Kalle Valo
  1 sibling, 0 replies; 9+ messages in thread
From: Kalle Valo @ 2016-04-26  9:10 UTC (permalink / raw)
  To: Tina Ruchandani
  Cc: Arnd Bergmann, y2038, linux-kernel, linux-wireless, netdev


> 'struct timeval' uses a 32-bit seconds field which will overflow in
> year 2038 and beyond. This patch is part of a larger effort to remove
> all instances of 'struct timeval' from the kernel and replace them
> with 64-bit timekeeping variables.
> The patch also fixes the debug printf specifier to avoid the
> seconds value being truncated.
> The patch was build-tested / debugged by removing the
> "if VERBOSE > SHOW_ERROR_MESSAGES" guards.
> 
> Signed-off-by: Tina Ruchandani <ruchandani.tina@gmail.com>
> Suggested-by: Arnd Bergmann <arnd@arndb.de>

Thanks, applied to wireless-drivers-next.git.

Kalle Valo

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-04-26  9:10 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-13  6:09 [PATCH v3] prism54: isl_38xx: Replace 'struct timeval' Tina Ruchandani
2016-04-13  8:38 ` Johannes Berg
2016-04-13  9:45   ` Arend Van Spriel
2016-04-16 23:34   ` Arnd Bergmann
2016-04-17 12:42     ` Johannes Berg
2016-04-17 22:10       ` Arnd Bergmann
2016-04-19  8:57         ` Johannes Berg
2016-04-22 18:09           ` Kalle Valo
2016-04-26  9:10 ` [v3] " Kalle Valo

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).