staging: rtl8192u: Convert timers to use timer_setup()
authorKees Cook <keescook@chromium.org>
Mon, 16 Oct 2017 23:24:46 +0000 (16:24 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 18 Oct 2017 13:44:39 +0000 (15:44 +0200)
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@linuxfoundation.org>
Cc: Derek Robson <robsonde@gmail.com>
Cc: simran singhal <singhalsimran0@gmail.com>
Cc: Riccardo Marotti <riccardo.marotti@gmail.com>
Cc: Fabrizio Perria <fabrizio.perria@gmail.com>
Cc: Arnd Bergmann <arnd@arndb.de>
Cc: Baoyou Xie <baoyou.xie@linaro.org>
Cc: Tuomo Rinne <tuomo.rinne@gmail.com>
Cc: Colin Ian King <colin.king@canonical.com>
Cc: devel@driverdev.osuosl.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8192u/ieee80211/ieee80211.h
drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.c
drivers/staging/rtl8192u/ieee80211/ieee80211_crypt.h
drivers/staging/rtl8192u/ieee80211/ieee80211_module.c
drivers/staging/rtl8192u/ieee80211/rtl819x_BAProc.c
drivers/staging/rtl8192u/ieee80211/rtl819x_TSProc.c
drivers/staging/rtl8192u/r8192U_core.c
drivers/staging/rtl8192u/r8192U_dm.c
drivers/staging/rtl8192u/r8192U_dm.h

index 3f434411247a0cabbc9a0d293a89fbe1062e0106..3addaa65085a64770e96221552e58255ac21b1b3 100644 (file)
@@ -2392,9 +2392,9 @@ void TsInitAddBA(struct ieee80211_device *ieee, PTX_TS_RECORD pTS,
                 u8 Policy, u8 bOverwritePending);
 void TsInitDelBA(struct ieee80211_device *ieee,
                 PTS_COMMON_INFO pTsCommonInfo, TR_SELECT TxRxSelect);
-void BaSetupTimeOut(unsigned long data);
-void TxBaInactTimeout(unsigned long data);
-void RxBaInactTimeout(unsigned long data);
+void BaSetupTimeOut(struct timer_list *t);
+void TxBaInactTimeout(struct timer_list *t);
+void RxBaInactTimeout(struct timer_list *t);
 void ResetBaEntry(PBA_RECORD pBA);
 //function in TS.c
 bool GetTs(
index 48e80be90ba584129e74761ce55f0153a160046e..6f457812e5a38ddf0fd807f48afd41936a907c71 100644 (file)
@@ -57,9 +57,9 @@ void ieee80211_crypt_deinit_entries(struct ieee80211_device *ieee,
        }
 }
 
-void ieee80211_crypt_deinit_handler(unsigned long data)
+void ieee80211_crypt_deinit_handler(struct timer_list *t)
 {
-       struct ieee80211_device *ieee = (struct ieee80211_device *)data;
+       struct ieee80211_device *ieee = from_timer(ieee, t, crypt_deinit_timer);
        unsigned long flags;
 
        spin_lock_irqsave(&ieee->lock, flags);
index a0aa0f5be63a15ae6bc099bf89bc36d88debbe21..1f2aea7e0e5599953195df8ccc62cf157038952a 100644 (file)
@@ -83,7 +83,7 @@ int ieee80211_register_crypto_ops(struct ieee80211_crypto_ops *ops);
 int ieee80211_unregister_crypto_ops(struct ieee80211_crypto_ops *ops);
 struct ieee80211_crypto_ops *ieee80211_get_crypto_ops(const char *name);
 void ieee80211_crypt_deinit_entries(struct ieee80211_device *ieee, int force);
-void ieee80211_crypt_deinit_handler(unsigned long data);
+void ieee80211_crypt_deinit_handler(struct timer_list *t);
 void ieee80211_crypt_delayed_deinit(struct ieee80211_device *ieee,
                                    struct ieee80211_crypt_data **crypt);
 
index 8f236b332a47dc36fea23162252861e6b7b6c309..90a097f2cd4eca871175a9b73bab65eb80e925a4 100644 (file)
@@ -133,8 +133,8 @@ struct net_device *alloc_ieee80211(int sizeof_priv)
        ieee->ieee802_1x = 1; /* Default to supporting 802.1x */
 
        INIT_LIST_HEAD(&ieee->crypt_deinit_list);
-       setup_timer(&ieee->crypt_deinit_timer,
-                   ieee80211_crypt_deinit_handler, (unsigned long)ieee);
+       timer_setup(&ieee->crypt_deinit_timer, ieee80211_crypt_deinit_handler,
+                   0);
 
        spin_lock_init(&ieee->lock);
        spin_lock_init(&ieee->wpax_suitlist_lock);
index 0f86195680e8f27516a4c75e3cd6fbc5eb90ec4a..4ef7d4e6393152a1555ed8c624f1538ab25df69f 100644 (file)
@@ -672,18 +672,18 @@ TsInitDelBA( struct ieee80211_device *ieee, PTS_COMMON_INFO pTsCommonInfo, TR_SE
  *  return:  NULL
  *  notice:
  ********************************************************************************************************************/
-void BaSetupTimeOut(unsigned long data)
+void BaSetupTimeOut(struct timer_list *t)
 {
-       PTX_TS_RECORD   pTxTs = (PTX_TS_RECORD)data;
+       PTX_TS_RECORD   pTxTs = from_timer(pTxTs, t, TxPendingBARecord.Timer);
 
        pTxTs->bAddBaReqInProgress = false;
        pTxTs->bAddBaReqDelayed = true;
        pTxTs->TxPendingBARecord.bValid = false;
 }
 
-void TxBaInactTimeout(unsigned long data)
+void TxBaInactTimeout(struct timer_list *t)
 {
-       PTX_TS_RECORD   pTxTs = (PTX_TS_RECORD)data;
+       PTX_TS_RECORD   pTxTs = from_timer(pTxTs, t, TxAdmittedBARecord.Timer);
        struct ieee80211_device *ieee = container_of(pTxTs, struct ieee80211_device, TxTsRecord[pTxTs->num]);
        TxTsDeleteBA(ieee, pTxTs);
        ieee80211_send_DELBA(
@@ -694,9 +694,9 @@ void TxBaInactTimeout(unsigned long data)
                DELBA_REASON_TIMEOUT);
 }
 
-void RxBaInactTimeout(unsigned long data)
+void RxBaInactTimeout(struct timer_list *t)
 {
-       PRX_TS_RECORD   pRxTs = (PRX_TS_RECORD)data;
+       PRX_TS_RECORD   pRxTs = from_timer(pRxTs, t, RxAdmittedBARecord.Timer);
        struct ieee80211_device *ieee = container_of(pRxTs, struct ieee80211_device, RxTsRecord[pRxTs->num]);
 
        RxTsDeleteBA(ieee, pRxTs);
index f98bb03aa293cecd9ca921de8d48538b1bab3b44..602be096fa730d8c35c383bb9f6483c1233a4222 100644 (file)
@@ -3,13 +3,13 @@
 #include <linux/slab.h>
 #include "rtl819x_TS.h"
 
-static void TsSetupTimeOut(unsigned long data)
+static void TsSetupTimeOut(struct timer_list *unused)
 {
        // Not implement yet
        // This is used for WMMSA and ACM , that would send ADDTSReq frame.
 }
 
-static void TsInactTimeout(unsigned long data)
+static void TsInactTimeout(struct timer_list *unused)
 {
        // Not implement yet
        // This is used for WMMSA and ACM.
@@ -22,9 +22,9 @@ static void TsInactTimeout(unsigned long data)
  *  return:  NULL
  *  notice:
  ********************************************************************************************************************/
-static void RxPktPendingTimeout(unsigned long data)
+static void RxPktPendingTimeout(struct timer_list *t)
 {
-       PRX_TS_RECORD   pRxTs = (PRX_TS_RECORD)data;
+       PRX_TS_RECORD   pRxTs = from_timer(pRxTs, t, RxPktPendingTimer);
        struct ieee80211_device *ieee = container_of(pRxTs, struct ieee80211_device, RxTsRecord[pRxTs->num]);
 
        PRX_REORDER_ENTRY       pReorderEntry = NULL;
@@ -89,9 +89,9 @@ static void RxPktPendingTimeout(unsigned long data)
  *  return:  NULL
  *  notice:
  ********************************************************************************************************************/
-static void TsAddBaProcess(unsigned long data)
+static void TsAddBaProcess(struct timer_list *t)
 {
-       PTX_TS_RECORD   pTxTs = (PTX_TS_RECORD)data;
+       PTX_TS_RECORD   pTxTs = from_timer(pTxTs, t, TsAddBaTimer);
        u8 num = pTxTs->num;
        struct ieee80211_device *ieee = container_of(pTxTs, struct ieee80211_device, TxTsRecord[num]);
 
@@ -145,16 +145,15 @@ void TSInitialize(struct ieee80211_device *ieee)
                pTxTS->num = count;
                // The timers for the operation of Traffic Stream and Block Ack.
                // DLS related timer will be add here in the future!!
-               setup_timer(&pTxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
-                           (unsigned long)pTxTS);
-               setup_timer(&pTxTS->TsCommonInfo.InactTimer, TsInactTimeout,
-                           (unsigned long)pTxTS);
-               setup_timer(&pTxTS->TsAddBaTimer, TsAddBaProcess,
-                           (unsigned long)pTxTS);
-               setup_timer(&pTxTS->TxPendingBARecord.Timer, BaSetupTimeOut,
-                           (unsigned long)pTxTS);
-               setup_timer(&pTxTS->TxAdmittedBARecord.Timer,
-                           TxBaInactTimeout, (unsigned long)pTxTS);
+               timer_setup(&pTxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
+                           0);
+               timer_setup(&pTxTS->TsCommonInfo.InactTimer, TsInactTimeout,
+                           0);
+               timer_setup(&pTxTS->TsAddBaTimer, TsAddBaProcess, 0);
+               timer_setup(&pTxTS->TxPendingBARecord.Timer, BaSetupTimeOut,
+                           0);
+               timer_setup(&pTxTS->TxAdmittedBARecord.Timer,
+                           TxBaInactTimeout, 0);
                ResetTxTsEntry(pTxTS);
                list_add_tail(&pTxTS->TsCommonInfo.List, &ieee->Tx_TS_Unused_List);
                pTxTS++;
@@ -167,14 +166,13 @@ void TSInitialize(struct ieee80211_device *ieee)
        for(count = 0; count < TOTAL_TS_NUM; count++) {
                pRxTS->num = count;
                INIT_LIST_HEAD(&pRxTS->RxPendingPktList);
-               setup_timer(&pRxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
-                           (unsigned long)pRxTS);
-               setup_timer(&pRxTS->TsCommonInfo.InactTimer, TsInactTimeout,
-                           (unsigned long)pRxTS);
-               setup_timer(&pRxTS->RxAdmittedBARecord.Timer,
-                           RxBaInactTimeout, (unsigned long)pRxTS);
-               setup_timer(&pRxTS->RxPktPendingTimer, RxPktPendingTimeout,
-                           (unsigned long)pRxTS);
+               timer_setup(&pRxTS->TsCommonInfo.SetupTimer, TsSetupTimeOut,
+                           0);
+               timer_setup(&pRxTS->TsCommonInfo.InactTimer, TsInactTimeout,
+                           0);
+               timer_setup(&pRxTS->RxAdmittedBARecord.Timer,
+                           RxBaInactTimeout, 0);
+               timer_setup(&pRxTS->RxPktPendingTimer, RxPktPendingTimeout, 0);
                ResetRxTsEntry(pRxTS);
                list_add_tail(&pRxTS->TsCommonInfo.List, &ieee->Rx_TS_Unused_List);
                pRxTS++;
index 8701ce25abe40d8f31a304798b4809932878eee4..09f66b386e44640f7f1542ef87494fa16b8a9ca6 100644 (file)
@@ -497,7 +497,7 @@ inline void force_pci_posting(struct net_device *dev)
 
 static struct net_device_stats *rtl8192_stats(struct net_device *dev);
 static void rtl8192_restart(struct work_struct *work);
-static void watch_dog_timer_callback(unsigned long data);
+static void watch_dog_timer_callback(struct timer_list *t);
 
 /****************************************************************************
  *   -----------------------------PROCFS STUFF-------------------------
@@ -2698,8 +2698,7 @@ static short rtl8192_init(struct net_device *dev)
        }
        rtl8192_get_channel_map(dev);
        init_hal_dm(dev);
-       setup_timer(&priv->watch_dog_timer, watch_dog_timer_callback,
-                   (unsigned long)dev);
+       timer_setup(&priv->watch_dog_timer, watch_dog_timer_callback, 0);
        if (rtl8192_usb_initendpoints(dev) != 0) {
                DMESG("Endopoints initialization failed");
                return -ENOMEM;
@@ -3500,9 +3499,9 @@ static void rtl819x_watchdog_wqcallback(struct work_struct *work)
        RT_TRACE(COMP_TRACE, " <==RtUsbCheckForHangWorkItemCallback()\n");
 }
 
-static void watch_dog_timer_callback(unsigned long data)
+static void watch_dog_timer_callback(struct timer_list *t)
 {
-       struct r8192_priv *priv = ieee80211_priv((struct net_device *)data);
+       struct r8192_priv *priv = from_timer(priv, t, watch_dog_timer);
 
        schedule_delayed_work(&priv->watch_dog_wq, 0);
        mod_timer(&priv->watch_dog_timer,
@@ -3529,7 +3528,7 @@ static int _rtl8192_up(struct net_device *dev)
        if (priv->ieee80211->state != IEEE80211_LINKED)
                ieee80211_softmac_start_protocol(priv->ieee80211);
        ieee80211_reset_queue(priv->ieee80211);
-       watch_dog_timer_callback((unsigned long)dev);
+       watch_dog_timer_callback(&priv->watch_dog_timer);
        if (!netif_queue_stopped(dev))
                netif_start_queue(dev);
        else
index e6f8d1da65d962b923bfa2bdb782025e6593e225..17e650184ee55e980dadfa25482604a3bbc33942 100644 (file)
@@ -2729,8 +2729,7 @@ static void dm_init_fsync(struct net_device *dev)
        priv->ieee80211->fsync_seconddiff_ratethreshold = 200;
        priv->ieee80211->fsync_state = Default_Fsync;
        priv->framesyncMonitor = 1;     /* current default 0xc38 monitor on */
-       setup_timer(&priv->fsync_timer, dm_fsync_timer_callback,
-                   (unsigned long)dev);
+       timer_setup(&priv->fsync_timer, dm_fsync_timer_callback, 0);
 }
 
 static void dm_deInit_fsync(struct net_device *dev)
@@ -2740,10 +2739,10 @@ static void dm_deInit_fsync(struct net_device *dev)
        del_timer_sync(&priv->fsync_timer);
 }
 
-void dm_fsync_timer_callback(unsigned long data)
+void dm_fsync_timer_callback(struct timer_list *t)
 {
-       struct net_device *dev = (struct net_device *)data;
-       struct r8192_priv *priv = ieee80211_priv((struct net_device *)data);
+       struct r8192_priv *priv = from_timer(priv, t, fsync_timer);
+       struct net_device *dev = priv->ieee80211->dev;
        u32 rate_index, rate_count = 0, rate_count_diff = 0;
        bool            bSwitchFromCountDiff = false;
        bool            bDoubleTimeInterval = false;
index 2d0232fb3f9b49283c46fc71771c5c7521a0d2df..b19b4e5b87ff2fd22871d4afbaed9fe8ccacb8d3 100644 (file)
@@ -226,7 +226,7 @@ void dm_force_tx_fw_info(struct net_device *dev,
 void dm_init_edca_turbo(struct net_device *dev);
 void dm_rf_operation_test_callback(unsigned long data);
 void dm_rf_pathcheck_workitemcallback(struct work_struct *work);
-void dm_fsync_timer_callback(unsigned long data);
+void dm_fsync_timer_callback(struct timer_list *t);
 void dm_cck_txpower_adjust(struct net_device *dev, bool  binch14);
 void dm_shadow_init(struct net_device *dev);
 void dm_initialize_txpower_tracking(struct net_device *dev);