oz_timer_add() modifies the expiry value of an active timer, which
results in data corruption.

Use hrtimer_start() and remove the silly conditional.

While at it use the proper helper function to convert milliseconds to
ktime.

Signed-off-by: Thomas Gleixner <t...@linutronix.de>
Cc: Shigekatsu Tateno <shigekatsu.tat...@atmel.com>
Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org>
Cc: de...@driverdev.osuosl.org
---
 drivers/staging/ozwpan/ozproto.c |   17 ++++-------------
 1 file changed, 4 insertions(+), 13 deletions(-)

Index: linux/drivers/staging/ozwpan/ozproto.c
===================================================================
--- linux.orig/drivers/staging/ozwpan/ozproto.c
+++ linux/drivers/staging/ozwpan/ozproto.c
@@ -566,23 +566,14 @@ void oz_timer_add(struct oz_pd *pd, int
        switch (type) {
        case OZ_TIMER_TOUT:
        case OZ_TIMER_STOP:
-               if (hrtimer_active(&pd->timeout)) {
-                       hrtimer_set_expires(&pd->timeout, ktime_set(due_time /
-                       MSEC_PER_SEC, (due_time % MSEC_PER_SEC) *
-                                                       NSEC_PER_MSEC));
-                       hrtimer_start_expires(&pd->timeout, HRTIMER_MODE_REL);
-               } else {
-                       hrtimer_start(&pd->timeout, ktime_set(due_time /
-                       MSEC_PER_SEC, (due_time % MSEC_PER_SEC) *
-                                       NSEC_PER_MSEC), HRTIMER_MODE_REL);
-               }
+               hrtimer_start(&pd->timeout, ms_to_ktime(due_time),
+                             HRTIMER_MODE_REL);
                pd->timeout_type = type;
                break;
        case OZ_TIMER_HEARTBEAT:
                if (!hrtimer_active(&pd->heartbeat))
-                       hrtimer_start(&pd->heartbeat, ktime_set(due_time /
-                       MSEC_PER_SEC, (due_time % MSEC_PER_SEC) *
-                                       NSEC_PER_MSEC), HRTIMER_MODE_REL);
+                       hrtimer_start(&pd->heartbeat, ms_to_ktime(due_time),
+                                     HRTIMER_MODE_REL);
                break;
        }
        spin_unlock_bh(&g_polling_lock);


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to