All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gustavo A. R. Silva" <gustavo@embeddedor.com>
To: Rosen Penev <rosenp@gmail.com>, netdev@vger.kernel.org
Cc: Jiri Pirko <jiri@resnulli.us>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Kees Cook <kees@kernel.org>,
	"Gustavo A. R. Silva" <gustavoars@kernel.org>,
	open list <linux-kernel@vger.kernel.org>,
	open "list:KERNEL" HARDENING "(not" covered by other
	"areas):Keyword:b__counted_by(_le|_be)?b"
	<linux-hardening@vger.kernel.org>
Subject: Re: [PATCH net-next] net: rocker: kzalloc + kcalloc to kzalloc_flex
Date: Fri, 6 Mar 2026 13:36:11 +0900	[thread overview]
Message-ID: <eb6c7f12-22d8-4384-b755-932fdfea5034@embeddedor.com> (raw)
In-Reply-To: <20260306025449.12333-1-rosenp@gmail.com>



On 3/6/26 11:54, Rosen Penev wrote:
> Combining the allocations simplifies things, especially the free path.
> 
> Remove ofdpa_group_tbl_entry_free as a result. kfree is shorter.
> 
> Add __counted_by for extra runtime analysis.
> 
> Signed-off-by: Rosen Penev <rosenp@gmail.com>

Acked-by: Gustavo A. R. Silva <gustavoars@kernel.org>

Thanks
-Gustavo

> ---
>   drivers/net/ethernet/rocker/rocker_ofdpa.c | 31 +++++-----------------
>   1 file changed, 7 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/net/ethernet/rocker/rocker_ofdpa.c b/drivers/net/ethernet/rocker/rocker_ofdpa.c
> index 50ea5f9ef63a..66a8ae67c3ea 100644
> --- a/drivers/net/ethernet/rocker/rocker_ofdpa.c
> +++ b/drivers/net/ethernet/rocker/rocker_ofdpa.c
> @@ -104,7 +104,6 @@ struct ofdpa_group_tbl_entry {
>   	u32 cmd;
>   	u32 group_id; /* key */
>   	u16 group_count;
> -	u32 *group_ids;
>   	union {
>   		struct {
>   			u8 pop_vlan;
> @@ -123,6 +122,8 @@ struct ofdpa_group_tbl_entry {
>   			u32 group_id;
>   		} l3_unicast;
>   	};
> +
> +	u32 group_ids[] __counted_by(group_count);
>   };
>   
>   struct ofdpa_fdb_tbl_entry {
> @@ -1059,19 +1060,6 @@ ofdpa_group_tbl_find(const struct ofdpa *ofdpa,
>   	return NULL;
>   }
>   
> -static void ofdpa_group_tbl_entry_free(struct ofdpa_group_tbl_entry *entry)
> -{
> -	switch (ROCKER_GROUP_TYPE_GET(entry->group_id)) {
> -	case ROCKER_OF_DPA_GROUP_TYPE_L2_FLOOD:
> -	case ROCKER_OF_DPA_GROUP_TYPE_L2_MCAST:
> -		kfree(entry->group_ids);
> -		break;
> -	default:
> -		break;
> -	}
> -	kfree(entry);
> -}
> -
>   static int ofdpa_group_tbl_add(struct ofdpa_port *ofdpa_port, int flags,
>   			       struct ofdpa_group_tbl_entry *match)
>   {
> @@ -1085,7 +1073,7 @@ static int ofdpa_group_tbl_add(struct ofdpa_port *ofdpa_port, int flags,
>   
>   	if (found) {
>   		hash_del(&found->entry);
> -		ofdpa_group_tbl_entry_free(found);
> +		kfree(found);
>   		found = match;
>   		found->cmd = ROCKER_TLV_CMD_TYPE_OF_DPA_GROUP_MOD;
>   	} else {
> @@ -1122,14 +1110,14 @@ static int ofdpa_group_tbl_del(struct ofdpa_port *ofdpa_port, int flags,
>   
>   	spin_unlock_irqrestore(&ofdpa->group_tbl_lock, lock_flags);
>   
> -	ofdpa_group_tbl_entry_free(match);
> +	kfree(match);
>   
>   	if (found) {
>   		err = rocker_cmd_exec(ofdpa_port->rocker_port,
>   				      ofdpa_flags_nowait(flags),
>   				      ofdpa_cmd_group_tbl_del,
>   				      found, NULL, NULL);
> -		ofdpa_group_tbl_entry_free(found);
> +		kfree(found);
>   	}
>   
>   	return err;
> @@ -1166,18 +1154,13 @@ static int ofdpa_group_l2_fan_out(struct ofdpa_port *ofdpa_port,
>   {
>   	struct ofdpa_group_tbl_entry *entry;
>   
> -	entry = kzalloc_obj(*entry);
> +	entry = kzalloc_flex(*entry, group_ids, group_count);
>   	if (!entry)
>   		return -ENOMEM;
>   
> -	entry->group_id = group_id;
>   	entry->group_count = group_count;
> +	entry->group_id = group_id;
>   
> -	entry->group_ids = kcalloc(group_count, sizeof(u32), GFP_KERNEL);
> -	if (!entry->group_ids) {
> -		kfree(entry);
> -		return -ENOMEM;
> -	}
>   	memcpy(entry->group_ids, group_ids, group_count * sizeof(u32));
>   
>   	return ofdpa_group_tbl_do(ofdpa_port, flags, entry);


  reply	other threads:[~2026-03-06 19:37 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-03-06  2:54 [PATCH net-next] net: rocker: kzalloc + kcalloc to kzalloc_flex Rosen Penev
2026-03-06  4:36 ` Gustavo A. R. Silva [this message]
2026-03-06 12:04 ` Jiri Pirko
2026-03-10  2:00 ` patchwork-bot+netdevbpf

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=eb6c7f12-22d8-4384-b755-932fdfea5034@embeddedor.com \
    --to=gustavo@embeddedor.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gustavoars@kernel.org \
    --cc=jiri@resnulli.us \
    --cc=kees@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-hardening@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=rosenp@gmail.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.