All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Ratheesh Kannoth <rkannoth@marvell.com>
Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
	sgoutham@marvell.com, davem@davemloft.net, edumazet@google.com,
	kuba@kernel.org, pabeni@redhat.com, bcreeley@amd.com,
	sbhatta@marvell.com, gakula@marvell.com, hkelam@marvell.com,
	sumang@marvell.com
Subject: Re: [PATCH net v3] octeontx2-af: Initialize maps.
Date: Thu, 1 Feb 2024 10:31:19 +0100	[thread overview]
Message-ID: <20240201093119.GB514352@kernel.org> (raw)
In-Reply-To: <20240131024118.254758-1-rkannoth@marvell.com>

On Wed, Jan 31, 2024 at 08:11:18AM +0530, Ratheesh Kannoth wrote:
> kmalloc_array() without __GFP_ZERO flag does not initialize
> memory to zero. This causes issues. Use __GFP_ZERO flag for maps and
> bitmap_zalloc() for bimaps.
> 
> Fixes: dd7842878633 ("octeontx2-af: Add new devlink param to configure maximum usable NIX block LFs")
> Signed-off-by: Ratheesh Kannoth <rkannoth@marvell.com>
> ---
> 
> ChangeLogs:
> v2 -> v3: Used GFP_ZERO for normal map arrays
> v1 -> v2: Used bitmap_zalloc() API.
> v0 -> v1: Removed devm_kcalloc()._
> ---
>  .../ethernet/marvell/octeontx2/af/rvu_npc.c   | 26 ++++++++++---------
>  1 file changed, 14 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> index 167145bdcb75..6a8f0efd96a5 100644
> --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu_npc.c
> @@ -1850,8 +1850,8 @@ void npc_mcam_rsrcs_deinit(struct rvu *rvu)
>  {
>  	struct npc_mcam *mcam = &rvu->hw->mcam;
> 
> -	kfree(mcam->bmap);
> -	kfree(mcam->bmap_reverse);
> +	bitmap_free(mcam->bmap);
> +	bitmap_free(mcam->bmap_reverse);
>  	kfree(mcam->entry2pfvf_map);
>  	kfree(mcam->cntr2pfvf_map);
>  	kfree(mcam->entry2cntr_map);
> @@ -1904,13 +1904,11 @@ int npc_mcam_rsrcs_init(struct rvu *rvu, int blkaddr)
>  	mcam->pf_offset = mcam->nixlf_offset + nixlf_count;
> 
>  	/* Allocate bitmaps for managing MCAM entries */
> -	mcam->bmap = kmalloc_array(BITS_TO_LONGS(mcam->bmap_entries),
> -				   sizeof(long), GFP_KERNEL);
> +	mcam->bmap = bitmap_zalloc(mcam->bmap_entries, GFP_KERNEL);
>  	if (!mcam->bmap)
>  		return -ENOMEM;
> 
> -	mcam->bmap_reverse = kmalloc_array(BITS_TO_LONGS(mcam->bmap_entries),
> -					   sizeof(long), GFP_KERNEL);
> +	mcam->bmap_reverse = bitmap_zalloc(mcam->bmap_entries, GFP_KERNEL);
>  	if (!mcam->bmap_reverse)
>  		goto free_bmap;
> 
> @@ -1918,7 +1916,8 @@ int npc_mcam_rsrcs_init(struct rvu *rvu, int blkaddr)
> 
>  	/* Alloc memory for saving entry to RVU PFFUNC allocation mapping */
>  	mcam->entry2pfvf_map = kmalloc_array(mcam->bmap_entries,
> -					     sizeof(u16), GFP_KERNEL);
> +					     sizeof(u16),
> +					     GFP_KERNEL | __GFP_ZERO);

Hi Ratheesh,

The use of bitmap_zalloc()/bitmap_free() looks good to me.
But for the kmalloc_array(..., GFP_KERNEL | __GFP_ZERO) cases
I think kcalloc() is the way to go.

>  	if (!mcam->entry2pfvf_map)
>  		goto free_bmap_reverse;
> 
> @@ -1942,7 +1941,8 @@ int npc_mcam_rsrcs_init(struct rvu *rvu, int blkaddr)
>  		goto free_entry_map;
> 
>  	mcam->cntr2pfvf_map = kmalloc_array(mcam->counters.max,
> -					    sizeof(u16), GFP_KERNEL);
> +					    sizeof(u16),
> +					    GFP_KERNEL | __GFP_ZERO);
>  	if (!mcam->cntr2pfvf_map)
>  		goto free_cntr_bmap;
> 
> @@ -1950,12 +1950,14 @@ int npc_mcam_rsrcs_init(struct rvu *rvu, int blkaddr)
>  	 * counter's reference count.
>  	 */
>  	mcam->entry2cntr_map = kmalloc_array(mcam->bmap_entries,
> -					     sizeof(u16), GFP_KERNEL);
> +					     sizeof(u16),
> +					     GFP_KERNEL | __GFP_ZERO);
>  	if (!mcam->entry2cntr_map)
>  		goto free_cntr_map;
> 
>  	mcam->cntr_refcnt = kmalloc_array(mcam->counters.max,
> -					  sizeof(u16), GFP_KERNEL);
> +					  sizeof(u16),
> +					  GFP_KERNEL | __GFP_ZERO);
>  	if (!mcam->cntr_refcnt)
>  		goto free_entry_cntr_map;
> 
> @@ -1988,9 +1990,9 @@ int npc_mcam_rsrcs_init(struct rvu *rvu, int blkaddr)
>  free_entry_map:
>  	kfree(mcam->entry2pfvf_map);
>  free_bmap_reverse:
> -	kfree(mcam->bmap_reverse);
> +	bitmap_free(mcam->bmap_reverse);
>  free_bmap:
> -	kfree(mcam->bmap);
> +	bitmap_free(mcam->bmap);
> 
>  	return -ENOMEM;
>  }
> --
> 2.25.1
> 

-- 
pw-bot: changes-requested

  parent reply	other threads:[~2024-02-01  9:31 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-01-31  2:41 [PATCH net v3] octeontx2-af: Initialize maps Ratheesh Kannoth
2024-01-31 17:30 ` Brett Creeley
2024-02-01  9:31 ` Simon Horman [this message]
2024-02-01  9:35   ` [EXT] " Ratheesh Kannoth
2024-02-01 16:27     ` Jakub Kicinski
2024-02-02  7:32       ` Ratheesh Kannoth

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=20240201093119.GB514352@kernel.org \
    --to=horms@kernel.org \
    --cc=bcreeley@amd.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gakula@marvell.com \
    --cc=hkelam@marvell.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rkannoth@marvell.com \
    --cc=sbhatta@marvell.com \
    --cc=sgoutham@marvell.com \
    --cc=sumang@marvell.com \
    /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.