In preparation for unconditionally passing the struct timer_list pointer to all timer callbacks, switch to using the new timer_setup() and from_timer() to pass the timer pointer explicitly. Cc: Kalle Valo <kvalo@xxxxxxxxxxxxxx> Cc: Arvind Yadav <arvind.yadav.cs@xxxxxxxxx> Cc: Ingo Molnar <mingo@xxxxxxxxxx> Cc: Johannes Berg <johannes.berg@xxxxxxxxx> Cc: "David S. Miller" <davem@xxxxxxxxxxxxx> Cc: Andrew Zaborowski <andrew.zaborowski@xxxxxxxxx> Cc: libertas-dev@xxxxxxxxxxxxxxxxxxx Cc: linux-wireless@xxxxxxxxxxxxxxx Cc: netdev@xxxxxxxxxxxxxxx Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> --- drivers/net/wireless/marvell/libertas/if_usb.c | 6 +++--- drivers/net/wireless/marvell/libertas/main.c | 21 +++++++++------------ drivers/net/wireless/marvell/libertas_tf/if_usb.c | 6 +++--- drivers/net/wireless/marvell/libertas_tf/main.c | 7 +++---- 4 files changed, 18 insertions(+), 22 deletions(-) diff --git a/drivers/net/wireless/marvell/libertas/if_usb.c b/drivers/net/wireless/marvell/libertas/if_usb.c index 16e54c757dd0..ffea610f67e2 100644 --- a/drivers/net/wireless/marvell/libertas/if_usb.c +++ b/drivers/net/wireless/marvell/libertas/if_usb.c @@ -161,9 +161,9 @@ static void if_usb_setup_firmware(struct lbs_private *priv) } } -static void if_usb_fw_timeo(unsigned long priv) +static void if_usb_fw_timeo(struct timer_list *t) { - struct if_usb_card *cardp = (void *)priv; + struct if_usb_card *cardp = from_timer(cardp, t, fw_timeout); if (cardp->fwdnldover) { lbs_deb_usb("Download complete, no event. Assuming success\n"); @@ -205,7 +205,7 @@ static int if_usb_probe(struct usb_interface *intf, if (!cardp) goto error; - setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp); + timer_setup(&cardp->fw_timeout, if_usb_fw_timeo, 0); init_waitqueue_head(&cardp->fw_wq); cardp->udev = udev; diff --git a/drivers/net/wireless/marvell/libertas/main.c b/drivers/net/wireless/marvell/libertas/main.c index aefa88f4f29c..f22e1c220cba 100644 --- a/drivers/net/wireless/marvell/libertas/main.c +++ b/drivers/net/wireless/marvell/libertas/main.c @@ -722,9 +722,9 @@ EXPORT_SYMBOL_GPL(lbs_resume); * * @data: &struct lbs_private pointer */ -static void lbs_cmd_timeout_handler(unsigned long data) +static void lbs_cmd_timeout_handler(struct timer_list *t) { - struct lbs_private *priv = (struct lbs_private *)data; + struct lbs_private *priv = from_timer(priv, t, command_timer); unsigned long flags; spin_lock_irqsave(&priv->driver_lock, flags); @@ -756,9 +756,9 @@ static void lbs_cmd_timeout_handler(unsigned long data) * * @data: &struct lbs_private pointer */ -static void lbs_tx_lockup_handler(unsigned long data) +static void lbs_tx_lockup_handler(struct timer_list *t) { - struct lbs_private *priv = (struct lbs_private *)data; + struct lbs_private *priv = from_timer(priv, t, tx_lockup_timer); unsigned long flags; spin_lock_irqsave(&priv->driver_lock, flags); @@ -779,9 +779,9 @@ static void lbs_tx_lockup_handler(unsigned long data) * @data: &struct lbs_private pointer * returns: N/A */ -static void auto_deepsleep_timer_fn(unsigned long data) +static void auto_deepsleep_timer_fn(struct timer_list *t) { - struct lbs_private *priv = (struct lbs_private *)data; + struct lbs_private *priv = from_timer(priv, t, auto_deepsleep_timer); if (priv->is_activity_detected) { priv->is_activity_detected = 0; @@ -847,12 +847,9 @@ static int lbs_init_adapter(struct lbs_private *priv) init_waitqueue_head(&priv->fw_waitq); mutex_init(&priv->lock); - setup_timer(&priv->command_timer, lbs_cmd_timeout_handler, - (unsigned long)priv); - setup_timer(&priv->tx_lockup_timer, lbs_tx_lockup_handler, - (unsigned long)priv); - setup_timer(&priv->auto_deepsleep_timer, auto_deepsleep_timer_fn, - (unsigned long)priv); + timer_setup(&priv->command_timer, lbs_cmd_timeout_handler, 0); + timer_setup(&priv->tx_lockup_timer, lbs_tx_lockup_handler, 0); + timer_setup(&priv->auto_deepsleep_timer, auto_deepsleep_timer_fn, 0); INIT_LIST_HEAD(&priv->cmdfreeq); INIT_LIST_HEAD(&priv->cmdpendingq); diff --git a/drivers/net/wireless/marvell/libertas_tf/if_usb.c b/drivers/net/wireless/marvell/libertas_tf/if_usb.c index e9104eca327b..5153922e7ce1 100644 --- a/drivers/net/wireless/marvell/libertas_tf/if_usb.c +++ b/drivers/net/wireless/marvell/libertas_tf/if_usb.c @@ -115,9 +115,9 @@ static void if_usb_setup_firmware(struct lbtf_private *priv) lbtf_deb_leave(LBTF_DEB_USB); } -static void if_usb_fw_timeo(unsigned long priv) +static void if_usb_fw_timeo(struct timer_list *t) { - struct if_usb_card *cardp = (void *)priv; + struct if_usb_card *cardp = from_timer(cardp, t, fw_timeout); lbtf_deb_enter(LBTF_DEB_USB); if (!cardp->fwdnldover) { @@ -156,7 +156,7 @@ static int if_usb_probe(struct usb_interface *intf, if (!cardp) goto error; - setup_timer(&cardp->fw_timeout, if_usb_fw_timeo, (unsigned long)cardp); + timer_setup(&cardp->fw_timeout, if_usb_fw_timeo, 0); init_waitqueue_head(&cardp->fw_wq); cardp->udev = udev; diff --git a/drivers/net/wireless/marvell/libertas_tf/main.c b/drivers/net/wireless/marvell/libertas_tf/main.c index 81228bf73043..1d45da187b9b 100644 --- a/drivers/net/wireless/marvell/libertas_tf/main.c +++ b/drivers/net/wireless/marvell/libertas_tf/main.c @@ -165,9 +165,9 @@ static int lbtf_setup_firmware(struct lbtf_private *priv) * This function handles the timeout of command sending. * It will re-send the same command again. */ -static void command_timer_fn(unsigned long data) +static void command_timer_fn(struct timer_list *t) { - struct lbtf_private *priv = (struct lbtf_private *)data; + struct lbtf_private *priv = from_timer(priv, t, command_timer); unsigned long flags; lbtf_deb_enter(LBTF_DEB_CMD); @@ -196,8 +196,7 @@ static int lbtf_init_adapter(struct lbtf_private *priv) mutex_init(&priv->lock); priv->vif = NULL; - setup_timer(&priv->command_timer, command_timer_fn, - (unsigned long)priv); + timer_setup(&priv->command_timer, command_timer_fn, 0); INIT_LIST_HEAD(&priv->cmdfreeq); INIT_LIST_HEAD(&priv->cmdpendingq); -- 2.7.4 -- Kees Cook Pixel Security