From: Gertjan van Wingerde <gwingerde@gmail.com>
To: Joe Perches <joe@perches.com>
Cc: netdev <netdev@vger.kernel.org>,
linux-wireless <linux-wireless@vger.kernel.org>,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH (for some future time)] drivers/net: Convert unbounded kzalloc calls to kcalloc
Date: Wed, 11 Aug 2010 20:40:39 +0200 [thread overview]
Message-ID: <4C62EEA7.8080900@gmail.com> (raw)
In-Reply-To: <1281546168.3976.39.camel@Joe-Laptop.home>
On 08/11/10 19:02, Joe Perches wrote:
> 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>
For the rt2x00 parts:
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
> ---
> drivers/net/cnic.c | 2 +-
> drivers/net/ehea/ehea_main.c | 4 ++--
> drivers/net/mlx4/alloc.c | 2 +-
> drivers/net/mlx4/en_rx.c | 2 +-
> drivers/net/mlx4/profile.c | 2 +-
> drivers/net/myri10ge/myri10ge.c | 4 ++--
> drivers/net/niu.c | 4 ++--
> drivers/net/vxge/vxge-main.c | 10 +++++-----
> drivers/net/wireless/airo.c | 5 ++---
> drivers/net/wireless/b43/phy_n.c | 2 +-
> drivers/net/wireless/ipw2x00/ipw2100.c | 6 +++---
> drivers/net/wireless/ipw2x00/ipw2200.c | 12 ++++++------
> drivers/net/wireless/rt2x00/rt2400pci.c | 2 +-
> drivers/net/wireless/rt2x00/rt2500pci.c | 2 +-
> drivers/net/wireless/rt2x00/rt2500usb.c | 2 +-
> drivers/net/wireless/rt2x00/rt2800lib.c | 2 +-
> drivers/net/wireless/rt2x00/rt2x00debug.c | 2 +-
> drivers/net/wireless/rt2x00/rt2x00queue.c | 4 ++--
> drivers/net/wireless/rt2x00/rt61pci.c | 2 +-
> drivers/net/wireless/rt2x00/rt73usb.c | 2 +-
> drivers/net/wireless/wl12xx/wl1271_scan.c | 2 +-
> 21 files changed, 37 insertions(+), 38 deletions(-)
>
> diff --git a/drivers/net/cnic.c b/drivers/net/cnic.c
> index 0961032..2ab6a7c 100644
> --- a/drivers/net/cnic.c
> +++ b/drivers/net/cnic.c
> @@ -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;
>
> diff --git a/drivers/net/ehea/ehea_main.c b/drivers/net/ehea/ehea_main.c
> index 3beba70..455d101 100644
> --- a/drivers/net/ehea/ehea_main.c
> +++ b/drivers/net/ehea/ehea_main.c
> @@ -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
> diff --git a/drivers/net/mlx4/alloc.c b/drivers/net/mlx4/alloc.c
> index 8c85156..537997f 100644
> --- a/drivers/net/mlx4/alloc.c
> +++ b/drivers/net/mlx4/alloc.c
> @@ -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;
> diff --git a/drivers/net/mlx4/en_rx.c b/drivers/net/mlx4/en_rx.c
> index 8e2fcb7..efc3fad 100644
> --- a/drivers/net/mlx4/en_rx.c
> +++ b/drivers/net/mlx4/en_rx.c
> @@ -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) {
> diff --git a/drivers/net/mlx4/profile.c b/drivers/net/mlx4/profile.c
> index 5caf011..e749f82 100644
> --- a/drivers/net/mlx4/profile.c
> +++ b/drivers/net/mlx4/profile.c
> @@ -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;
>
> diff --git a/drivers/net/myri10ge/myri10ge.c b/drivers/net/myri10ge/myri10ge.c
> index d771d16..323fbc1 100644
> --- a/drivers/net/myri10ge/myri10ge.c
> +++ b/drivers/net/myri10ge/myri10ge.c
> @@ -3729,8 +3729,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++) {
> diff --git a/drivers/net/niu.c b/drivers/net/niu.c
> index b9b9508..fc58f9c 100644
> --- a/drivers/net/niu.c
> +++ b/drivers/net/niu.c
> @@ -4507,7 +4507,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)
> @@ -4541,7 +4541,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)
> diff --git a/drivers/net/vxge/vxge-main.c b/drivers/net/vxge/vxge-main.c
> index c7c5605..f5334b2 100644
> --- a/drivers/net/vxge/vxge-main.c
> +++ b/drivers/net/vxge/vxge-main.c
> @@ -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);
> diff --git a/drivers/net/wireless/airo.c b/drivers/net/wireless/airo.c
> index 1d05445..7d26506 100644
> --- a/drivers/net/wireless/airo.c
> +++ b/drivers/net/wireless/airo.c
> @@ -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;
> diff --git a/drivers/net/wireless/b43/phy_n.c b/drivers/net/wireless/b43/phy_n.c
> index 5a72570..e288c55 100644
> --- a/drivers/net/wireless/b43/phy_n.c
> +++ b/drivers/net/wireless/b43/phy_n.c
> @@ -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;
> diff --git a/drivers/net/wireless/ipw2x00/ipw2100.c b/drivers/net/wireless/ipw2x00/ipw2100.c
> index c24c5ef..2e07f1e 100644
> --- a/drivers/net/wireless/ipw2x00/ipw2100.c
> +++ b/drivers/net/wireless/ipw2x00/ipw2100.c
> @@ -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);
> /* translate geo->bg to bg_band.channels */
> for (i = 0; i < geo->bg_channels; i++) {
> bg_band->channels[i].band = IEEE80211_BAND_2GHZ;
> diff --git a/drivers/net/wireless/ipw2x00/ipw2200.c b/drivers/net/wireless/ipw2x00/ipw2200.c
> index cb2552a..0f25083 100644
> --- a/drivers/net/wireless/ipw2x00/ipw2200.c
> +++ b/drivers/net/wireless/ipw2x00/ipw2200.c
> @@ -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;
> diff --git a/drivers/net/wireless/rt2x00/rt2400pci.c b/drivers/net/wireless/rt2x00/rt2400pci.c
> index 5063e01..8e3fbdf 100644
> --- a/drivers/net/wireless/rt2x00/rt2400pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2400pci.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2500pci.c b/drivers/net/wireless/rt2x00/rt2500pci.c
> index c2a555d..1d174e4 100644
> --- a/drivers/net/wireless/rt2x00/rt2500pci.c
> +++ b/drivers/net/wireless/rt2x00/rt2500pci.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2500usb.c b/drivers/net/wireless/rt2x00/rt2500usb.c
> index cdaf93f..8ddaae4 100644
> --- a/drivers/net/wireless/rt2x00/rt2500usb.c
> +++ b/drivers/net/wireless/rt2x00/rt2500usb.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2800lib.c b/drivers/net/wireless/rt2x00/rt2800lib.c
> index b66e0fd..8c00fbd 100644
> --- a/drivers/net/wireless/rt2x00/rt2800lib.c
> +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00debug.c b/drivers/net/wireless/rt2x00/rt2x00debug.c
> index b0498e7..2d018ce 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00debug.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00debug.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt2x00queue.c b/drivers/net/wireless/rt2x00/rt2x00queue.c
> index a3401d3..9c609be 100644
> --- a/drivers/net/wireless/rt2x00/rt2x00queue.c
> +++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
> @@ -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;
> diff --git a/drivers/net/wireless/rt2x00/rt61pci.c b/drivers/net/wireless/rt2x00/rt61pci.c
> index e539c6c..f226582 100644
> --- a/drivers/net/wireless/rt2x00/rt61pci.c
> +++ b/drivers/net/wireless/rt2x00/rt61pci.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/rt2x00/rt73usb.c b/drivers/net/wireless/rt2x00/rt73usb.c
> index aa9de18..99985a2 100644
> --- a/drivers/net/wireless/rt2x00/rt73usb.c
> +++ b/drivers/net/wireless/rt2x00/rt73usb.c
> @@ -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;
>
> diff --git a/drivers/net/wireless/wl12xx/wl1271_scan.c b/drivers/net/wireless/wl12xx/wl1271_scan.c
> index fec43ee..30dc100 100644
> --- a/drivers/net/wireless/wl12xx/wl1271_scan.c
> +++ b/drivers/net/wireless/wl12xx/wl1271_scan.c
> @@ -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);
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2010-08-11 18:40 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-11 17:02 [PATCH (for some future time)] drivers/net: Convert unbounded kzalloc calls to kcalloc Joe Perches
2010-08-11 18:40 ` Gertjan van Wingerde [this message]
2010-08-12 6:48 ` Luciano Coelho
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4C62EEA7.8080900@gmail.com \
--to=gwingerde@gmail.com \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-wireless@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.