Netdev List
 help / color / mirror / Atom feed
From: Moshe Shemesh <moshe@nvidia.com>
To: Tariq Toukan <tariqt@nvidia.com>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>
Cc: Saeed Mahameed <saeedm@nvidia.com>,
	Leon Romanovsky <leon@kernel.org>, Mark Bloch <mbloch@nvidia.com>,
	Akiva Goldberger <agoldberger@nvidia.com>,
	<netdev@vger.kernel.org>, <linux-rdma@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, Gal Pressman <gal@nvidia.com>,
	Dragos Tatulea <dtatulea@nvidia.com>,
	Simon Horman <horms@kernel.org>
Subject: Re: [PATCH net-next V2 4/8] net/mlx5: Switch vport HCA cap helpers to kvzalloc
Date: Tue, 19 May 2026 18:50:00 +0300	[thread overview]
Message-ID: <55bc6475-b24b-41a3-8e71-3196236fe627@nvidia.com> (raw)
In-Reply-To: <20260518071356.345723-5-tariqt@nvidia.com>



On 5/18/2026 10:13 AM, Tariq Toukan wrote:
> From: Moshe Shemesh <moshe@nvidia.com>
> 
> mlx5_vport_set_other_func_cap() and mlx5_vport_get_vhca_id() allocate
> command buffers that embed the HCA capability union, exceeding 4KiB.
> Use kvzalloc/kvfree so the allocation can fall back to vmalloc when
> contiguous memory is scarce.
> 
> Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
> Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
> ---
>   drivers/net/ethernet/mellanox/mlx5/core/vport.c | 8 ++++----
>   1 file changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/vport.c b/drivers/net/ethernet/mellanox/mlx5/core/vport.c
> index 4effe37fd455..f8e6b1ab7c5c 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/vport.c
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/vport.c
> @@ -1336,7 +1336,7 @@ int mlx5_vport_get_vhca_id(struct mlx5_core_dev *dev, u16 vport, u16 *vhca_id)
>   	if (mlx5_esw_vport_vhca_id(dev->priv.eswitch, vport, vhca_id))
>   		return 0;
>   
> -	query_ctx = kzalloc(query_out_sz, GFP_KERNEL);
> +	query_ctx = kvzalloc(query_out_sz, GFP_KERNEL);
>   	if (!query_ctx)
>   		return -ENOMEM;

Sashiko.dev says:
"
The commit message notes that these structures exceed 4KiB and are 
vulnerable to allocation failures under memory fragmentation. Are there 
other allocations of these same structures that were missed?
For instance, mlx5_core_get_caps_mode() in main.c allocates 
query_hca_cap_out with kzalloc(). Since this is on the initialization 
path for every mlx5 device (including dynamically created SR-IOV VFs), 
could this fail under fragmentation and prevent VF creation?
Other locations that still appear to use kzalloc() for these >4KiB 
structures include devlink configuration paths like 
mlx5_devlink_port_fn_migratable_set() and 
mlx5_devlink_port_fn_roce_set() in eswitch_offloads.c and eswitch.c.
Should these be converted to kvzalloc() as well to prevent similar 
allocation failures?
"

As it says, there are more places in the driver, this patch handles it 
for the vport. I will send cleanup patches for others.

>   
> @@ -1348,7 +1348,7 @@ int mlx5_vport_get_vhca_id(struct mlx5_core_dev *dev, u16 vport, u16 *vhca_id)
>   	*vhca_id = MLX5_GET(cmd_hca_cap, hca_caps, vhca_id);
>   
>   out_free:
> -	kfree(query_ctx);
> +	kvfree(query_ctx);
>   	return err;
>   }
>   EXPORT_SYMBOL_GPL(mlx5_vport_get_vhca_id);
> @@ -1363,7 +1363,7 @@ int mlx5_vport_set_other_func_cap(struct mlx5_core_dev *dev, const void *hca_cap
>   	void *set_ctx;
>   	int ret;
>   
> -	set_ctx = kzalloc(set_sz, GFP_KERNEL);
> +	set_ctx = kvzalloc(set_sz, GFP_KERNEL);
>   	if (!set_ctx)
>   		return -ENOMEM;
>   
> @@ -1392,6 +1392,6 @@ int mlx5_vport_set_other_func_cap(struct mlx5_core_dev *dev, const void *hca_cap
>   	MLX5_SET(set_hca_cap_in, set_ctx, function_id, function_id);
>   	ret = mlx5_cmd_exec_in(dev, set_hca_cap, set_ctx);
>   
> -	kfree(set_ctx);
> +	kvfree(set_ctx);
>   	return ret;
>   }


  reply	other threads:[~2026-05-19 15:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-18  7:13 [PATCH net-next V2 0/8] net/mlx5: Prepare eswitch infrastructure for satellite PF support Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 1/8] net/mlx5: Use helper to parse host PF info Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 2/8] net/mlx5: Use v1 response layout for query_esw_functions Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 3/8] net/mlx5: Use mlx5_eswitch_is_vf_vport() for IPsec VF checks Tariq Toukan
2026-05-19 15:54   ` Moshe Shemesh
2026-05-18  7:13 ` [PATCH net-next V2 4/8] net/mlx5: Switch vport HCA cap helpers to kvzalloc Tariq Toukan
2026-05-19 15:50   ` Moshe Shemesh [this message]
2026-05-18  7:13 ` [PATCH net-next V2 5/8] net/mlx5: Add mlx5_vport_set_other_func_general_cap macro Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 6/8] net/mlx5: Refactor mlx5_set_msix_vec_count() SET_HCA_CAP Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 7/8] net/mlx5: Use vport helper for IPsec eswitch set caps Tariq Toukan
2026-05-18  7:13 ` [PATCH net-next V2 8/8] net/mlx5: Generalize enable/disable HCA for any PF vport Tariq Toukan
2026-05-21 10:20 ` [PATCH net-next V2 0/8] net/mlx5: Prepare eswitch infrastructure for satellite PF support 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=55bc6475-b24b-41a3-8e71-3196236fe627@nvidia.com \
    --to=moshe@nvidia.com \
    --cc=agoldberger@nvidia.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=dtatulea@nvidia.com \
    --cc=edumazet@google.com \
    --cc=gal@nvidia.com \
    --cc=horms@kernel.org \
    --cc=kuba@kernel.org \
    --cc=leon@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rdma@vger.kernel.org \
    --cc=mbloch@nvidia.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@nvidia.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox