Re: [patch] usb ohci : fix 2 timers to fire at jiffies + 1s

David Brownell
2008-03-27T19:07:28Z

On Wednesday 26 March 2008, Richard Kennedy wrote:
> Code inspection discovered in 2 places timers were being
> incorrectly setup using round_jiffies_relative(HZ).
> The timer would then fire at time (0 <= T < HZ).
>
> Fix them to use round_jiffies(jiffies + HZ);
>
> Signed-off-by: Richard Kennedy <richard@rsk.demon.co.uk>

Acked-by: David Brownell <dbrownell@users.sourceforge.net>

> ---
>
> compiled on latest v2.6.25-rc7-11 git head but not otherwise tested.
> Richard
>
> diff --git a/drivers/usb/host/ohci-hcd.c b/drivers/usb/host/ohci-hcd.c
> index dd4798e..33f1c1c 100644
> --- a/drivers/usb/host/ohci-hcd.c
> +++ b/drivers/usb/host/ohci-hcd.c
> @@ -467,7 +467,7 @@ static void unlink_watchdog_func(unsigned long _ohci)
> out:
> kfree(seen);
> if (ohci->eds_scheduled)
> - mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ));
> + mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ));
> done:
> spin_unlock_irqrestore(&ohci->lock, flags);
> }
> diff --git a/drivers/usb/host/ohci-q.c b/drivers/usb/host/ohci-q.c
> index 5181732..9c9f3b5 100644
> --- a/drivers/usb/host/ohci-q.c
> +++ b/drivers/usb/host/ohci-q.c
> @@ -169,7 +169,7 @@ static int ed_schedule (struct ohci_hcd *ohci, struct ed *ed)
> if (quirk_zfmicro(ohci)
> && (ed->type == PIPE_INTERRUPT)
> && !(ohci->eds_scheduled++))
> - mod_timer(&ohci->unlink_watchdog, round_jiffies_relative(HZ));
> + mod_timer(&ohci->unlink_watchdog, round_jiffies(jiffies + HZ));
> wmb ();
>
> /* we care about rm_list when setting CLE/BLE in case the HC was at
>
>