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: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Sergio Paracuellos <sergio.paracuellos@xxxxxxxxx> Cc: Adrien Descamps <adrien.descamps@xxxxxxxxx> Cc: Thibaut SAUTEREAU <thibaut.sautereau@xxxxxxxxxxxxxxxxxxx> Cc: devel@xxxxxxxxxxxxxxxxxxxx Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> --- drivers/staging/wlan-ng/hfa384x_usb.c | 29 +++++++++++++---------------- drivers/staging/wlan-ng/prism2mgmt.h | 2 +- drivers/staging/wlan-ng/prism2sta.c | 4 ++-- 3 files changed, 16 insertions(+), 19 deletions(-) diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c index d1e8218f96fb..5975d47dfa71 100644 --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -184,11 +184,11 @@ static void hfa384x_usbin_ctlx(struct hfa384x *hw, union hfa384x_usbin *usbin, static void hfa384x_usbctlxq_run(struct hfa384x *hw); -static void hfa384x_usbctlx_reqtimerfn(unsigned long data); +static void hfa384x_usbctlx_reqtimerfn(struct timer_list *t); -static void hfa384x_usbctlx_resptimerfn(unsigned long data); +static void hfa384x_usbctlx_resptimerfn(struct timer_list *t); -static void hfa384x_usb_throttlefn(unsigned long data); +static void hfa384x_usb_throttlefn(struct timer_list *t); static void hfa384x_usbctlx_completion_task(unsigned long data); @@ -558,13 +558,11 @@ void hfa384x_create(struct hfa384x *hw, struct usb_device *usb) INIT_WORK(&hw->link_bh, prism2sta_processing_defer); INIT_WORK(&hw->usb_work, hfa384x_usb_defer); - setup_timer(&hw->throttle, hfa384x_usb_throttlefn, (unsigned long)hw); + timer_setup(&hw->throttle, hfa384x_usb_throttlefn, 0); - setup_timer(&hw->resptimer, hfa384x_usbctlx_resptimerfn, - (unsigned long)hw); + timer_setup(&hw->resptimer, hfa384x_usbctlx_resptimerfn, 0); - setup_timer(&hw->reqtimer, hfa384x_usbctlx_reqtimerfn, - (unsigned long)hw); + timer_setup(&hw->reqtimer, hfa384x_usbctlx_reqtimerfn, 0); usb_init_urb(&hw->rx_urb); usb_init_urb(&hw->tx_urb); @@ -574,8 +572,7 @@ void hfa384x_create(struct hfa384x *hw, struct usb_device *usb) hw->state = HFA384x_STATE_INIT; INIT_WORK(&hw->commsqual_bh, prism2sta_commsqual_defer); - setup_timer(&hw->commsqual_timer, prism2sta_commsqual_timer, - (unsigned long)hw); + timer_setup(&hw->commsqual_timer, prism2sta_commsqual_timer, 0); } /*---------------------------------------------------------------- @@ -3800,9 +3797,9 @@ static void hfa384x_ctlxout_callback(struct urb *urb) * interrupt *---------------------------------------------------------------- */ -static void hfa384x_usbctlx_reqtimerfn(unsigned long data) +static void hfa384x_usbctlx_reqtimerfn(struct timer_list *t) { - struct hfa384x *hw = (struct hfa384x *)data; + struct hfa384x *hw = from_timer(hw, t, reqtimer); unsigned long flags; spin_lock_irqsave(&hw->ctlxq.lock, flags); @@ -3859,9 +3856,9 @@ static void hfa384x_usbctlx_reqtimerfn(unsigned long data) * interrupt *---------------------------------------------------------------- */ -static void hfa384x_usbctlx_resptimerfn(unsigned long data) +static void hfa384x_usbctlx_resptimerfn(struct timer_list *t) { - struct hfa384x *hw = (struct hfa384x *)data; + struct hfa384x *hw = from_timer(hw, t, resptimer); unsigned long flags; spin_lock_irqsave(&hw->ctlxq.lock, flags); @@ -3899,9 +3896,9 @@ static void hfa384x_usbctlx_resptimerfn(unsigned long data) * Interrupt *---------------------------------------------------------------- */ -static void hfa384x_usb_throttlefn(unsigned long data) +static void hfa384x_usb_throttlefn(struct timer_list *t) { - struct hfa384x *hw = (struct hfa384x *)data; + struct hfa384x *hw = from_timer(hw, t, throttle); unsigned long flags; spin_lock_irqsave(&hw->ctlxq.lock, flags); diff --git a/drivers/staging/wlan-ng/prism2mgmt.h b/drivers/staging/wlan-ng/prism2mgmt.h index 88b979ff68b3..c062418f1202 100644 --- a/drivers/staging/wlan-ng/prism2mgmt.h +++ b/drivers/staging/wlan-ng/prism2mgmt.h @@ -109,7 +109,7 @@ int prism2mgmt_get_grpaddr_index(u32 did); void prism2sta_processing_defer(struct work_struct *data); void prism2sta_commsqual_defer(struct work_struct *data); -void prism2sta_commsqual_timer(unsigned long data); +void prism2sta_commsqual_timer(struct timer_list *t); /* Interface callback functions, passing data back up to the cfg80211 layer */ void prism2_connect_result(struct wlandevice *wlandev, u8 failed); diff --git a/drivers/staging/wlan-ng/prism2sta.c b/drivers/staging/wlan-ng/prism2sta.c index 070a237004cb..99316b9a4e49 100644 --- a/drivers/staging/wlan-ng/prism2sta.c +++ b/drivers/staging/wlan-ng/prism2sta.c @@ -2004,9 +2004,9 @@ void prism2sta_commsqual_defer(struct work_struct *data) mod_timer(&hw->commsqual_timer, jiffies + HZ); } -void prism2sta_commsqual_timer(unsigned long data) +void prism2sta_commsqual_timer(struct timer_list *t) { - struct hfa384x *hw = (struct hfa384x *)data; + struct hfa384x *hw = from_timer(hw, t, commsqual_timer); schedule_work(&hw->commsqual_bh); } -- 2.7.4 -- Kees Cook Pixel Security _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel