All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] staging: gdm72xx: gdm_stdio: Replace timeval with ktime_t
@ 2015-10-28  5:55 Amitoj Kaur Chawla
  2015-11-04 22:28 ` [Y2038] " Arnd Bergmann
  0 siblings, 1 reply; 2+ messages in thread
From: Amitoj Kaur Chawla @ 2015-10-28  5:55 UTC (permalink / raw)
  To: outreachy-kernel; +Cc: y2038

This driver uses 'struct timeval' which we are trying to remove since
32 bit time types will break in the year 2038 by replacing it with
ktime_t.

This patch changes do_gettimeofday() to ktime_get() because
ktime_get() returns a ktime_t while do_gettimeofday() returns struct
timeval.

This patch also uses ktime_us_delta() to get the elapsed time.

Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>
---
 drivers/staging/gdm72xx/gdm_sdio.c | 10 +++++-----
 drivers/staging/gdm72xx/gdm_sdio.h |  4 ++--
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/drivers/staging/gdm72xx/gdm_sdio.c b/drivers/staging/gdm72xx/gdm_sdio.c
index b0521da..1a2a5a4 100644
--- a/drivers/staging/gdm72xx/gdm_sdio.c
+++ b/drivers/staging/gdm72xx/gdm_sdio.c
@@ -14,6 +14,7 @@
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/kernel.h>
+#include <linux/ktime.h>
 
 #include <linux/mmc/core.h>
 #include <linux/mmc/card.h>
@@ -303,7 +304,7 @@ static void send_sdu(struct sdio_func *func, struct tx_cxt *tx)
 		put_tx_struct(t->tx_cxt, t);
 	}
 
-	do_gettimeofday(&tx->sdu_stamp);
+	tx->sdu_stamp = ktime_get();
 	spin_unlock_irqrestore(&tx->lock, flags);
 }
 
@@ -330,7 +331,7 @@ static void do_tx(struct work_struct *work)
 	struct sdio_func *func = sdev->func;
 	struct tx_cxt *tx = &sdev->tx;
 	struct sdio_tx *t = NULL;
-	struct timeval now, *before;
+	ktime_t now, *before;
 	int is_sdu = 0;
 	long diff;
 	unsigned long flags;
@@ -346,11 +347,10 @@ static void do_tx(struct work_struct *work)
 		list_del(&t->list);
 		is_sdu = 0;
 	} else if (!tx->stop_sdu_tx && !list_empty(&tx->sdu_list)) {
-		do_gettimeofday(&now);
+		now = ktime_get();
 		before = &tx->sdu_stamp;
 
-		diff = (now.tv_sec - before->tv_sec) * 1000000 +
-			(now.tv_usec - before->tv_usec);
+		diff = ktime_us_delta(now, before);
 		if (diff >= 0 && diff < TX_INTERVAL) {
 			schedule_work(&sdev->ws);
 			spin_unlock_irqrestore(&tx->lock, flags);
diff --git a/drivers/staging/gdm72xx/gdm_sdio.h b/drivers/staging/gdm72xx/gdm_sdio.h
index 77ad9d6..aa7dad2 100644
--- a/drivers/staging/gdm72xx/gdm_sdio.h
+++ b/drivers/staging/gdm72xx/gdm_sdio.h
@@ -15,7 +15,7 @@
 #define __GDM72XX_GDM_SDIO_H__
 
 #include <linux/types.h>
-#include <linux/time.h>
+#include <linux/ktime.h>
 
 #define MAX_NR_SDU_BUF  64
 
@@ -32,7 +32,7 @@ struct tx_cxt {
 	struct list_head	free_list;
 	struct list_head	sdu_list;
 	struct list_head	hci_list;
-	struct timeval		sdu_stamp;
+	ktime_t			sdu_stamp;
 	u8			*sdu_buf;
 	spinlock_t		lock;
 	int			can_send;
-- 
1.9.1



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

* Re: [Y2038] [PATCH] staging: gdm72xx: gdm_stdio: Replace timeval with ktime_t
  2015-10-28  5:55 [PATCH] staging: gdm72xx: gdm_stdio: Replace timeval with ktime_t Amitoj Kaur Chawla
@ 2015-11-04 22:28 ` Arnd Bergmann
  0 siblings, 0 replies; 2+ messages in thread
From: Arnd Bergmann @ 2015-11-04 22:28 UTC (permalink / raw)
  To: y2038; +Cc: Amitoj Kaur Chawla, outreachy-kernel

On Wednesday 28 October 2015 11:25:52 Amitoj Kaur Chawla wrote:
> This driver uses 'struct timeval' which we are trying to remove since
> 32 bit time types will break in the year 2038 by replacing it with
> ktime_t.
> 
> This patch changes do_gettimeofday() to ktime_get() because
> ktime_get() returns a ktime_t while do_gettimeofday() returns struct
> timeval.
> 
> This patch also uses ktime_us_delta() to get the elapsed time.
> 
> Signed-off-by: Amitoj Kaur Chawla <amitoj1606@gmail.com>

The patch looks great, except for one important detail:

>         } else if (!tx->stop_sdu_tx && !list_empty(&tx->sdu_list)) {
> -               do_gettimeofday(&now);
> +               now = ktime_get();
>                 before = &tx->sdu_stamp;
>  
> -               diff = (now.tv_sec - before->tv_sec) * 1000000 +
> -                       (now.tv_usec - before->tv_usec);
> +               diff = ktime_us_delta(now, before);
>                 if (diff >= 0 && diff < TX_INTERVAL) {
>                         schedule_work(&sdev->ws);
>                         spin_unlock_irqrestore(&tx->lock, flags);

This will not compile. Something must have gone wrong with your build
testing, otherwise you would have surely found the problem.

	Arnd


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

end of thread, other threads:[~2015-11-04 22:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-28  5:55 [PATCH] staging: gdm72xx: gdm_stdio: Replace timeval with ktime_t Amitoj Kaur Chawla
2015-11-04 22:28 ` [Y2038] " Arnd Bergmann

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.