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;
> }
next prev parent 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