iwlagn: use kcalloc when possible for array allocation
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>
Thu, 22 Sep 2011 22:14:53 +0000 (15:14 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 27 Sep 2011 18:34:07 +0000 (14:34 -0400)
As everybody knows kcalloc checks the multiplication is safe and
that we don't run into overflow.

Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/iwlwifi/iwl-agn-tt.c
drivers/net/wireless/iwlwifi/iwl-core.c
drivers/net/wireless/iwlwifi/iwl-eeprom.c
drivers/net/wireless/iwlwifi/iwl-trans-pcie.c

index 495f936647414b8ceaf38b74ea5bc7d26cd15a95..289e5d8113834a23d800c640407d121307e81e74 100644 (file)
@@ -641,11 +641,13 @@ void iwl_tt_initialize(struct iwl_priv *priv)
 
        if (priv->cfg->base_params->adv_thermal_throttle) {
                IWL_DEBUG_TEMP(priv, "Advanced Thermal Throttling\n");
-               tt->restriction = kzalloc(sizeof(struct iwl_tt_restriction) *
-                                        IWL_TI_STATE_MAX, GFP_KERNEL);
-               tt->transaction = kzalloc(sizeof(struct iwl_tt_trans) *
-                       IWL_TI_STATE_MAX * (IWL_TI_STATE_MAX - 1),
-                       GFP_KERNEL);
+               tt->restriction = kcalloc(IWL_TI_STATE_MAX,
+                                         sizeof(struct iwl_tt_restriction),
+                                         GFP_KERNEL);
+               tt->transaction = kcalloc(IWL_TI_STATE_MAX *
+                                         (IWL_TI_STATE_MAX - 1),
+                                         sizeof(struct iwl_tt_trans),
+                                         GFP_KERNEL);
                if (!tt->restriction || !tt->transaction) {
                        IWL_ERR(priv, "Fallback to Legacy Throttling\n");
                        priv->thermal_throttle.advanced_tt = false;
index cea6520fafdb27789de270af3357e7b8739409d5..fc400bb2bdffa8b0c4e646b601a927d608534543 100644 (file)
@@ -125,12 +125,12 @@ int iwl_init_geos(struct iwl_priv *priv)
                return 0;
        }
 
-       channels = kzalloc(sizeof(struct ieee80211_channel) *
-                          priv->channel_count, GFP_KERNEL);
+       channels = kcalloc(priv->channel_count,
+                          sizeof(struct ieee80211_channel), GFP_KERNEL);
        if (!channels)
                return -ENOMEM;
 
-       rates = kzalloc((sizeof(struct ieee80211_rate) * IWL_RATE_COUNT_LEGACY),
+       rates = kcalloc(IWL_RATE_COUNT_LEGACY, sizeof(struct ieee80211_rate),
                        GFP_KERNEL);
        if (!rates) {
                kfree(channels);
index 0b669417b0a604f4928f1c559af4322788e20aca..a4e43bd4a54763bfac47354088f027a4023ebc63 100644 (file)
@@ -899,8 +899,9 @@ int iwl_init_channel_map(struct iwl_priv *priv)
        IWL_DEBUG_EEPROM(priv, "Parsing data for %d channels.\n",
                        priv->channel_count);
 
-       priv->channel_info = kzalloc(sizeof(struct iwl_channel_info) *
-                                    priv->channel_count, GFP_KERNEL);
+       priv->channel_info = kcalloc(priv->channel_count,
+                                    sizeof(struct iwl_channel_info),
+                                    GFP_KERNEL);
        if (!priv->channel_info) {
                IWL_ERR(priv, "Could not allocate channel_info\n");
                priv->channel_count = 0;
index 781f6aa81df952aee1c4adc99f53ffeb70ce2f78..416e9920e4d95c63ed03ae579457d896ba959382 100644 (file)
@@ -304,8 +304,8 @@ static int iwl_trans_txq_alloc(struct iwl_trans *trans,
 
        txq->q.n_window = slots_num;
 
-       txq->meta = kzalloc(sizeof(txq->meta[0]) * slots_num, GFP_KERNEL);
-       txq->cmd = kzalloc(sizeof(txq->cmd[0]) * slots_num, GFP_KERNEL);
+       txq->meta = kcalloc(slots_num, sizeof(txq->meta[0]), GFP_KERNEL);
+       txq->cmd = kcalloc(slots_num, sizeof(txq->cmd[0]), GFP_KERNEL);
 
        if (!txq->meta || !txq->cmd)
                goto error;
@@ -322,8 +322,8 @@ static int iwl_trans_txq_alloc(struct iwl_trans *trans,
        /* Driver private data, only for Tx (not command) queues,
         * not shared with device. */
        if (txq_id != trans->shrd->cmd_queue) {
-               txq->skbs = kzalloc(sizeof(txq->skbs[0]) *
-                                  TFD_QUEUE_SIZE_MAX, GFP_KERNEL);
+               txq->skbs = kcalloc(TFD_QUEUE_SIZE_MAX, sizeof(txq->skbs[0]),
+                                   GFP_KERNEL);
                if (!txq->skbs) {
                        IWL_ERR(trans, "kmalloc for auxiliary BD "
                                  "structures failed\n");
@@ -534,8 +534,8 @@ static int iwl_trans_tx_alloc(struct iwl_trans *trans)
                goto error;
        }
 
-       trans_pcie->txq = kzalloc(sizeof(struct iwl_tx_queue) *
-                       hw_params(trans).max_txq_num, GFP_KERNEL);
+       trans_pcie->txq = kcalloc(hw_params(trans).max_txq_num,
+                                 sizeof(struct iwl_tx_queue), GFP_KERNEL);
        if (!trans_pcie->txq) {
                IWL_ERR(trans, "Not enough memory for txq\n");
                ret = ENOMEM;