Re: [PATCH net-next v1 0/4] net/mlx5: Don't free CQs whose destroy failed

From: Junxian Huang

Date: Fri Oct 16 2026 - 03:00:03 EST


Hi Yuho,

On 2026/10/16 12:57, Yuho Choi wrote:
> mlx5_core_destroy_cq() can fail, and when it does the CQ may still
> exist in firmware with access to its buffer and doorbell record. It
> also returns early in that case, without waiting for EQ handlers that
> may already hold a reference to the CQ. The four helpers in this series
> ignore that error and free the CQ buffer anyway, while their teardown
> paths also free the object that embeds the struct mlx5_core_cq.
>
> Keep the buffer and the object that embeds the CQ when DESTROY_CQ

Are the buffer and object freed somewhere else later? Or are they
leaked forever?

Thanks,
Junxian

> fails, as the regular mlx5_ib CQ destroy path does. The HWS send ring
> CQs are polled and never armed, so the HWS patch keeps only their
> buffer rather than passing the error up through the queue open and
> close paths.
>
> The issues were found with a static analysis tool from ongoing, not yet
> published research, and confirmed by code inspection. None of them was
> reproduced, so this targets net-next; I can resend for net if you
> prefer.
>
> Compile-tested only (x86_64 defconfig with MLX5_CORE_EN, MLX5_ESWITCH,
> MLX5_SW_STEERING and MLX5_HW_STEERING, W=1).
>
> Yuho Choi (4):
> net/mlx5: Don't free the ASO CQ if destroying it fails
> net/mlx5: Don't free the WC test CQ if destroying it fails
> net/mlx5: DR, Don't free the send ring CQ if destroying it fails
> net/mlx5: HWS, Don't free the send ring CQ buffer if destroying the CQ
> fails
>
> .../net/ethernet/mellanox/mlx5/core/lib/aso.c | 18 +++++++++++++-----
> .../mellanox/mlx5/core/steering/hws/send.c | 4 +++-
> .../mellanox/mlx5/core/steering/sws/dr_send.c | 4 +++-
> drivers/net/ethernet/mellanox/mlx5/core/wc.c | 17 ++++++++++++-----
> 4 files changed, 31 insertions(+), 12 deletions(-)
>
>
> base-commit: 2f2f7eeef8b0a1a9b9ca998231419873ccae8d4e