drivers/net: Convert unbounded kzalloc calls to kcalloc
authorJoe Perches <joe@perches.com>
Wed, 11 Aug 2010 07:02:48 +0000 (07:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 18 Aug 2010 00:45:14 +0000 (17:45 -0700)
These changes may be slightly safer in some instances.

There are other kzalloc calls with a multiply, but those
calls are typically "small fixed #" * sizeof(some pointer)"
and those are not converted.

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Acked-by: Luciano Coelho <luciano.coelho@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
21 files changed:
drivers/net/cnic.c
drivers/net/ehea/ehea_main.c
drivers/net/mlx4/alloc.c
drivers/net/mlx4/en_rx.c
drivers/net/mlx4/profile.c
drivers/net/myri10ge/myri10ge.c
drivers/net/niu.c
drivers/net/vxge/vxge-main.c
drivers/net/wireless/airo.c
drivers/net/wireless/b43/phy_n.c
drivers/net/wireless/ipw2x00/ipw2100.c
drivers/net/wireless/ipw2x00/ipw2200.c
drivers/net/wireless/rt2x00/rt2400pci.c
drivers/net/wireless/rt2x00/rt2500pci.c
drivers/net/wireless/rt2x00/rt2500usb.c
drivers/net/wireless/rt2x00/rt2800lib.c
drivers/net/wireless/rt2x00/rt2x00debug.c
drivers/net/wireless/rt2x00/rt2x00queue.c
drivers/net/wireless/rt2x00/rt61pci.c
drivers/net/wireless/rt2x00/rt73usb.c
drivers/net/wireless/wl12xx/wl1271_scan.c

index 09610323a948cab243d083c1a8435853b8893184..2ab6a7c4ffc1cac6ea22ca8b88377cc469fd2217 100644 (file)
@@ -1022,7 +1022,7 @@ static int cnic_alloc_bnx2x_context(struct cnic_dev *dev)
        if (blks > cp->ethdev->ctx_tbl_len)
                return -ENOMEM;
 
-       cp->ctx_arr = kzalloc(blks * sizeof(struct cnic_ctx), GFP_KERNEL);
+       cp->ctx_arr = kcalloc(blks, sizeof(struct cnic_ctx), GFP_KERNEL);
        if (cp->ctx_arr == NULL)
                return -ENOMEM;
 
index 897719b49f96859b11a1f01f4f45e46c03c4cd71..0f9b27b93a7183f9d9a9c74d8aa4ad591abdaa42 100644 (file)
@@ -180,7 +180,7 @@ static void ehea_update_firmware_handles(void)
                         num_portres * EHEA_NUM_PORTRES_FW_HANDLES;
 
        if (num_fw_handles) {
-               arr = kzalloc(num_fw_handles * sizeof(*arr), GFP_KERNEL);
+               arr = kcalloc(num_fw_handles, sizeof(*arr), GFP_KERNEL);
                if (!arr)
                        goto out;  /* Keep the existing array */
        } else
@@ -265,7 +265,7 @@ static void ehea_update_bcmc_registrations(void)
                }
 
        if (num_registrations) {
-               arr = kzalloc(num_registrations * sizeof(*arr), GFP_ATOMIC);
+               arr = kcalloc(num_registrations, sizeof(*arr), GFP_ATOMIC);
                if (!arr)
                        goto out;  /* Keep the existing array */
        } else
index 8c8515619b8e9b808aafbf08bdab91bb080bb17a..537997f9443ee792c98bf9eed3c1a1a668739389 100644 (file)
@@ -188,7 +188,7 @@ int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct,
                buf->nbufs       = (size + PAGE_SIZE - 1) / PAGE_SIZE;
                buf->npages      = buf->nbufs;
                buf->page_shift  = PAGE_SHIFT;
-               buf->page_list   = kzalloc(buf->nbufs * sizeof *buf->page_list,
+               buf->page_list   = kcalloc(buf->nbufs, sizeof(*buf->page_list),
                                           GFP_KERNEL);
                if (!buf->page_list)
                        return -ENOMEM;
index 8e2fcb7103c3a12a3072549881a7529d3062bc85..efc3fad468dbf9a52cd75b9da197c24bc4e65129 100644 (file)
@@ -322,7 +322,7 @@ int mlx4_en_create_rx_ring(struct mlx4_en_priv *priv,
        ring->lro.ip_summed_aggr = CHECKSUM_UNNECESSARY;
        ring->lro.max_desc = mdev->profile.num_lro;
        ring->lro.max_aggr = MAX_SKB_FRAGS;
-       ring->lro.lro_arr = kzalloc(mdev->profile.num_lro *
+       ring->lro.lro_arr = kcalloc(mdev->profile.num_lro,
                                    sizeof(struct net_lro_desc),
                                    GFP_KERNEL);
        if (!ring->lro.lro_arr) {
index 5caf0115fa5b4e923e3d10d760c6c1284a21c694..e749f82865fee073175182b5451d683dd2ba1707 100644 (file)
@@ -85,7 +85,7 @@ u64 mlx4_make_profile(struct mlx4_dev *dev,
        struct mlx4_resource tmp;
        int i, j;
 
-       profile = kzalloc(MLX4_RES_NUM * sizeof *profile, GFP_KERNEL);
+       profile = kcalloc(MLX4_RES_NUM, sizeof(*profile), GFP_KERNEL);
        if (!profile)
                return -ENOMEM;
 
index fb2c0927d3ccd76135d069f29971f238886b0f5a..24ab8a43c777be4ba631aa84aaad6fc5b087412e 100644 (file)
@@ -3753,8 +3753,8 @@ static void myri10ge_probe_slices(struct myri10ge_priv *mgp)
         * slices. We give up on MSI-X if we can only get a single
         * vector. */
 
-       mgp->msix_vectors = kzalloc(mgp->num_slices *
-                                   sizeof(*mgp->msix_vectors), GFP_KERNEL);
+       mgp->msix_vectors = kcalloc(mgp->num_slices, sizeof(*mgp->msix_vectors),
+                                   GFP_KERNEL);
        if (mgp->msix_vectors == NULL)
                goto disable_msix;
        for (i = 0; i < mgp->num_slices; i++) {
index bc695d53cdccbcca3eb1c2ccb30018acb3c8bde6..b4cc61f1fc59b3456c53bdef8ca426584c2ffe53 100644 (file)
@@ -4504,7 +4504,7 @@ static int niu_alloc_channels(struct niu *np)
 
        np->dev->real_num_tx_queues = np->num_tx_rings;
 
-       np->rx_rings = kzalloc(np->num_rx_rings * sizeof(struct rx_ring_info),
+       np->rx_rings = kcalloc(np->num_rx_rings, sizeof(struct rx_ring_info),
                               GFP_KERNEL);
        err = -ENOMEM;
        if (!np->rx_rings)
@@ -4538,7 +4538,7 @@ static int niu_alloc_channels(struct niu *np)
                        return err;
        }
 
-       np->tx_rings = kzalloc(np->num_tx_rings * sizeof(struct tx_ring_info),
+       np->tx_rings = kcalloc(np->num_tx_rings, sizeof(struct tx_ring_info),
                               GFP_KERNEL);
        err = -ENOMEM;
        if (!np->tx_rings)
index c7c5605b3728384069e0e3aa187a30b0e85bd512..f5334b287fdb11bea1ccad673a498eed22534372 100644 (file)
@@ -2159,8 +2159,8 @@ start:
        /* Alarm MSIX Vectors count */
        vdev->intr_cnt++;
 
-       vdev->entries = kzalloc(vdev->intr_cnt * sizeof(struct msix_entry),
-                                               GFP_KERNEL);
+       vdev->entries = kcalloc(vdev->intr_cnt, sizeof(struct msix_entry),
+                               GFP_KERNEL);
        if (!vdev->entries) {
                vxge_debug_init(VXGE_ERR,
                        "%s: memory allocation failed",
@@ -2169,9 +2169,9 @@ start:
                goto alloc_entries_failed;
        }
 
-       vdev->vxge_entries =
-               kzalloc(vdev->intr_cnt * sizeof(struct vxge_msix_entry),
-                               GFP_KERNEL);
+       vdev->vxge_entries = kcalloc(vdev->intr_cnt,
+                                    sizeof(struct vxge_msix_entry),
+                                    GFP_KERNEL);
        if (!vdev->vxge_entries) {
                vxge_debug_init(VXGE_ERR, "%s: memory allocation failed",
                        VXGE_DRIVER_NAME);
index 1d05445d4ba397cb04545d1ba105e1040c864176..7d26506957d7e167a0d3e72790f6420c582c89cc 100644 (file)
@@ -2723,9 +2723,8 @@ static int airo_networks_allocate(struct airo_info *ai)
        if (ai->networks)
                return 0;
 
-       ai->networks =
-           kzalloc(AIRO_MAX_NETWORK_COUNT * sizeof(BSSListElement),
-                   GFP_KERNEL);
+       ai->networks = kcalloc(AIRO_MAX_NETWORK_COUNT, sizeof(BSSListElement),
+                              GFP_KERNEL);
        if (!ai->networks) {
                airo_print_warn("", "Out of memory allocating beacons");
                return -ENOMEM;
index 5a725703770cb6d9a01236f0121b052f6cd0cc4b..e288c559481d8c07ba94e3e1658fe357ca1a8763 100644 (file)
@@ -1182,7 +1182,7 @@ static u16 b43_nphy_gen_load_samples(struct b43_wldev *dev, u32 freq, u16 max,
                len = bw << 1;
        }
 
-       samples = kzalloc(len * sizeof(struct b43_c32), GFP_KERNEL);
+       samples = kcalloc(len, sizeof(struct b43_c32), GFP_KERNEL);
        if (!samples) {
                b43err(dev->wl, "allocation for samples generation failed\n");
                return 0;
index 1189dbb6e2a62abcdc090ca5eea61a9eb5824aa7..0c67b172d4c6e90edc162742ac8a7a293de21089 100644 (file)
@@ -1921,9 +1921,9 @@ static int ipw2100_net_init(struct net_device *dev)
 
                bg_band->band = IEEE80211_BAND_2GHZ;
                bg_band->n_channels = geo->bg_channels;
-               bg_band->channels =
-                       kzalloc(geo->bg_channels *
-                               sizeof(struct ieee80211_channel), GFP_KERNEL);
+               bg_band->channels = kcalloc(geo->bg_channels,
+                                           sizeof(struct ieee80211_channel),
+                                           GFP_KERNEL);
                if (!bg_band->channels) {
                        ipw2100_down(priv);
                        return -ENOMEM;
index cb2552a6777c1a26573b5684320933486747d20c..0f2508384c751c35422e598f1c561e1db2372d43 100644 (file)
@@ -11467,9 +11467,9 @@ static int ipw_net_init(struct net_device *dev)
 
                bg_band->band = IEEE80211_BAND_2GHZ;
                bg_band->n_channels = geo->bg_channels;
-               bg_band->channels =
-                       kzalloc(geo->bg_channels *
-                               sizeof(struct ieee80211_channel), GFP_KERNEL);
+               bg_band->channels = kcalloc(geo->bg_channels,
+                                           sizeof(struct ieee80211_channel),
+                                           GFP_KERNEL);
                /* translate geo->bg to bg_band.channels */
                for (i = 0; i < geo->bg_channels; i++) {
                        bg_band->channels[i].band = IEEE80211_BAND_2GHZ;
@@ -11502,9 +11502,9 @@ static int ipw_net_init(struct net_device *dev)
 
                a_band->band = IEEE80211_BAND_5GHZ;
                a_band->n_channels = geo->a_channels;
-               a_band->channels =
-                       kzalloc(geo->a_channels *
-                               sizeof(struct ieee80211_channel), GFP_KERNEL);
+               a_band->channels = kcalloc(geo->a_channels,
+                                          sizeof(struct ieee80211_channel),
+                                          GFP_KERNEL);
                /* translate geo->bg to a_band.channels */
                for (i = 0; i < geo->a_channels; i++) {
                        a_band->channels[i].band = IEEE80211_BAND_2GHZ;
index 5063e01410e5b76640946aea9d1722d0543c2aa5..8e3fbdf4888972eb6d4dc2e22ba38da64edc2236 100644 (file)
@@ -1481,7 +1481,7 @@ static int rt2400pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index c2a555d5376b3bbe4738813225a695d8fd81eac0..1d174e42f11e2c6a13a4625f83c4570407d1e660 100644 (file)
@@ -1795,7 +1795,7 @@ static int rt2500pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index cdaf93f48263c012649b30d6b72604ac0b853f64..8ddaae44d7fb83cffeb2b38c4e92c609d39fba5d 100644 (file)
@@ -1698,7 +1698,7 @@ static int rt2500usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index b66e0fd8f0fa178f2d18544a2dc3e192c7c00b93..8c00fbda8664b3ed1d089cb54ab03080e61583cd 100644 (file)
@@ -2865,7 +2865,7 @@ int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index b0498e7e7aae95a733eef24bbb139ee0486c690b..2d018ceffc54574651f04bdc28bef571488f3f82 100644 (file)
@@ -333,7 +333,7 @@ static ssize_t rt2x00debug_read_queue_stats(struct file *file,
        if (*offset)
                return 0;
 
-       data = kzalloc(lines * MAX_LINE_LENGTH, GFP_KERNEL);
+       data = kcalloc(lines, MAX_LINE_LENGTH, GFP_KERNEL);
        if (!data)
                return -ENOMEM;
 
index a3401d301058870745879c6ec0b19fa2d29ebfda..9c609be950834dc3d47844a016c654a79a743384 100644 (file)
@@ -755,7 +755,7 @@ static int rt2x00queue_alloc_entries(struct data_queue *queue,
         * Allocate all queue entries.
         */
        entry_size = sizeof(*entries) + qdesc->priv_size;
-       entries = kzalloc(queue->limit * entry_size, GFP_KERNEL);
+       entries = kcalloc(queue->limit, entry_size, GFP_KERNEL);
        if (!entries)
                return -ENOMEM;
 
@@ -891,7 +891,7 @@ int rt2x00queue_allocate(struct rt2x00_dev *rt2x00dev)
         */
        rt2x00dev->data_queues = 2 + rt2x00dev->ops->tx_queues + req_atim;
 
-       queue = kzalloc(rt2x00dev->data_queues * sizeof(*queue), GFP_KERNEL);
+       queue = kcalloc(rt2x00dev->data_queues, sizeof(*queue), GFP_KERNEL);
        if (!queue) {
                ERROR(rt2x00dev, "Queue allocation failed.\n");
                return -ENOMEM;
index e539c6cb636fd5d429f30c50fba98e1a6512b70c..f226582dbc874e18126952d1d539941b27261057 100644 (file)
@@ -2654,7 +2654,7 @@ static int rt61pci_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index aa9de18fd410f016c452008e7852abcf5adc937c..99985a2186533543ad02d27df7601f0469b6969a 100644 (file)
@@ -2084,7 +2084,7 @@ static int rt73usb_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
        /*
         * Create channel information array
         */
-       info = kzalloc(spec->num_channels * sizeof(*info), GFP_KERNEL);
+       info = kcalloc(spec->num_channels, sizeof(*info), GFP_KERNEL);
        if (!info)
                return -ENOMEM;
 
index fec43eed8c553424231c6b990132b35bf8b7167b..30dc1000f563e170403968874076ec20293bef48 100644 (file)
@@ -248,7 +248,7 @@ int wl1271_scan(struct wl1271 *wl, const u8 *ssid, size_t ssid_len,
 
        wl->scan.req = req;
 
-       wl->scan.scanned_ch = kzalloc(req->n_channels *
+       wl->scan.scanned_ch = kcalloc(req->n_channels,
                                      sizeof(*wl->scan.scanned_ch),
                                      GFP_KERNEL);
        wl1271_scan_stm(wl);