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: Larry Finger <Larry.Finger@xxxxxxxxxxxx> Cc: Florian Schilhabel <florian.c.schilhabel@xxxxxxxxxxxxxx> Cc: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> Cc: Tejaswini Poluri <tejaswinipoluri3@xxxxxxxxx> Cc: Scott Matheina <scott@xxxxxxxxxxxx> Cc: Varsha Rao <rvarsha016@xxxxxxxxx> Cc: Julia Lawall <julia.lawall@xxxxxxx> Cc: Aleksey Kurbatov <alkbt@xxxxxxxxx> Cc: Vijai Kumar K <vijaikumar.kanagarajan@xxxxxxxxx> Cc: Wei Yongjun <weiyongjun1@xxxxxxxxxx> Cc: "Raphaël Beamonte" <raphael.beamonte@xxxxxxxxx> Cc: Jannik Becher <becher.jannik@xxxxxxxxx> Cc: Joseph Wright <rjosephwright@xxxxxxxxx> Cc: devel@xxxxxxxxxxxxxxxxxxxx Cc: Thomas Gleixner <tglx@xxxxxxxxxxxxx> Signed-off-by: Kees Cook <keescook@xxxxxxxxxxxx> --- This requires commit 686fef928bba ("timer: Prepare to change timer callback argument type") in v4.14-rc3, but should be otherwise stand-alone. --- drivers/staging/rtl8712/mlme_linux.c | 48 +++++++++++++++--------------- drivers/staging/rtl8712/os_intfs.c | 4 +-- drivers/staging/rtl8712/rtl871x_pwrctrl.c | 8 ++--- drivers/staging/rtl8712/rtl871x_security.c | 5 ++-- drivers/staging/rtl8712/rtl871x_security.h | 2 +- 5 files changed, 34 insertions(+), 33 deletions(-) diff --git a/drivers/staging/rtl8712/mlme_linux.c b/drivers/staging/rtl8712/mlme_linux.c index a077069d6227..3c7c4a4faeb2 100644 --- a/drivers/staging/rtl8712/mlme_linux.c +++ b/drivers/staging/rtl8712/mlme_linux.c @@ -32,39 +32,45 @@ #include "drv_types.h" #include "mlme_osdep.h" -static void sitesurvey_ctrl_handler(unsigned long data) +static void sitesurvey_ctrl_handler(struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, + mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer); _r8712_sitesurvey_ctrl_handler(adapter); mod_timer(&adapter->mlmepriv.sitesurveyctrl.sitesurvey_ctrl_timer, jiffies + msecs_to_jiffies(3000)); } -static void join_timeout_handler (unsigned long data) +static void join_timeout_handler (struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, mlmepriv.assoc_timer); _r8712_join_timeout_handler(adapter); } -static void _scan_timeout_handler (unsigned long data) +static void _scan_timeout_handler (struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, mlmepriv.scan_to_timer); r8712_scan_timeout_handler(adapter); } -static void dhcp_timeout_handler (unsigned long data) +static void dhcp_timeout_handler (struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, mlmepriv.dhcp_timer); _r8712_dhcp_timeout_handler(adapter); } -static void wdg_timeout_handler (unsigned long data) +static void wdg_timeout_handler (struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, mlmepriv.wdg_timer); _r8712_wdg_timeout_handler(adapter); @@ -76,17 +82,12 @@ void r8712_init_mlme_timer(struct _adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - setup_timer(&pmlmepriv->assoc_timer, join_timeout_handler, - (unsigned long)padapter); - setup_timer(&pmlmepriv->sitesurveyctrl.sitesurvey_ctrl_timer, - sitesurvey_ctrl_handler, - (unsigned long)padapter); - setup_timer(&pmlmepriv->scan_to_timer, _scan_timeout_handler, - (unsigned long)padapter); - setup_timer(&pmlmepriv->dhcp_timer, dhcp_timeout_handler, - (unsigned long)padapter); - setup_timer(&pmlmepriv->wdg_timer, wdg_timeout_handler, - (unsigned long)padapter); + timer_setup(&pmlmepriv->assoc_timer, join_timeout_handler, 0); + timer_setup(&pmlmepriv->sitesurveyctrl.sitesurvey_ctrl_timer, + sitesurvey_ctrl_handler, 0); + timer_setup(&pmlmepriv->scan_to_timer, _scan_timeout_handler, 0); + timer_setup(&pmlmepriv->dhcp_timer, dhcp_timeout_handler, 0); + timer_setup(&pmlmepriv->wdg_timer, wdg_timeout_handler, 0); } void r8712_os_indicate_connect(struct _adapter *adapter) @@ -118,9 +119,8 @@ void r8712_os_indicate_disconnect(struct _adapter *adapter) adapter->securitypriv.btkip_countermeasure; memset((unsigned char *)&adapter->securitypriv, 0, sizeof(struct security_priv)); - setup_timer(&adapter->securitypriv.tkip_timer, - r8712_use_tkipkey_handler, - (unsigned long)adapter); + timer_setup(&adapter->securitypriv.tkip_timer, + r8712_use_tkipkey_handler, 0); /* Restore the PMK information to securitypriv structure * for the following connection. */ diff --git a/drivers/staging/rtl8712/os_intfs.c b/drivers/staging/rtl8712/os_intfs.c index e698f6ede449..3fce3956b49e 100644 --- a/drivers/staging/rtl8712/os_intfs.c +++ b/drivers/staging/rtl8712/os_intfs.c @@ -313,8 +313,8 @@ u8 r8712_init_drv_sw(struct _adapter *padapter) _r8712_init_recv_priv(&padapter->recvpriv, padapter); memset((unsigned char *)&padapter->securitypriv, 0, sizeof(struct security_priv)); - setup_timer(&padapter->securitypriv.tkip_timer, - r8712_use_tkipkey_handler, (unsigned long)padapter); + timer_setup(&padapter->securitypriv.tkip_timer, + r8712_use_tkipkey_handler, 0); _r8712_init_sta_priv(&padapter->stapriv); padapter->stapriv.padapter = padapter; r8712_init_bcmc_stainfo(padapter); diff --git a/drivers/staging/rtl8712/rtl871x_pwrctrl.c b/drivers/staging/rtl8712/rtl871x_pwrctrl.c index e42fc1404c35..ae4c9567bb55 100644 --- a/drivers/staging/rtl8712/rtl871x_pwrctrl.c +++ b/drivers/staging/rtl8712/rtl871x_pwrctrl.c @@ -164,9 +164,10 @@ static void rpwm_workitem_callback(struct work_struct *work) } } -static void rpwm_check_handler (unsigned long data) +static void rpwm_check_handler (struct timer_list *t) { - struct _adapter *adapter = (struct _adapter *)data; + struct _adapter *adapter = + from_timer(adapter, t, pwrctrlpriv.rpwm_check_timer); _rpwm_check_handler(adapter); } @@ -185,8 +186,7 @@ void r8712_init_pwrctrl_priv(struct _adapter *padapter) r8712_write8(padapter, 0x1025FE58, 0); INIT_WORK(&pwrctrlpriv->SetPSModeWorkItem, SetPSModeWorkItemCallback); INIT_WORK(&pwrctrlpriv->rpwm_workitem, rpwm_workitem_callback); - setup_timer(&pwrctrlpriv->rpwm_check_timer, rpwm_check_handler, - (unsigned long)padapter); + timer_setup(&pwrctrlpriv->rpwm_check_timer, rpwm_check_handler, 0); } /* diff --git a/drivers/staging/rtl8712/rtl871x_security.c b/drivers/staging/rtl8712/rtl871x_security.c index bd83fb492c45..56d36f6f9c46 100644 --- a/drivers/staging/rtl8712/rtl871x_security.c +++ b/drivers/staging/rtl8712/rtl871x_security.c @@ -1402,9 +1402,10 @@ u32 r8712_aes_decrypt(struct _adapter *padapter, u8 *precvframe) return _SUCCESS; } -void r8712_use_tkipkey_handler(unsigned long data) +void r8712_use_tkipkey_handler(struct timer_list *t) { - struct _adapter *padapter = (struct _adapter *)data; + struct _adapter *padapter = + from_timer(padapter, t, securitypriv.tkip_timer); padapter->securitypriv.busetkipkey = true; } diff --git a/drivers/staging/rtl8712/rtl871x_security.h b/drivers/staging/rtl8712/rtl871x_security.h index fa952e17975b..46b88a41d236 100644 --- a/drivers/staging/rtl8712/rtl871x_security.h +++ b/drivers/staging/rtl8712/rtl871x_security.h @@ -224,7 +224,7 @@ void r8712_wep_encrypt(struct _adapter *padapter, u8 *pxmitframe); u32 r8712_aes_decrypt(struct _adapter *padapter, u8 *precvframe); u32 r8712_tkip_decrypt(struct _adapter *padapter, u8 *precvframe); void r8712_wep_decrypt(struct _adapter *padapter, u8 *precvframe); -void r8712_use_tkipkey_handler(unsigned long data); +void r8712_use_tkipkey_handler(struct timer_list *t); #endif /*__RTL871X_SECURITY_H_ */ -- 2.7.4 -- Kees Cook Pixel Security _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel