Re: [PATCH net] mlx5: Fix default values in create CQ

From: Leon Romanovsky

Date: Sun Nov 09 2025 - 06:54:28 EST


On Sun, Nov 09, 2025 at 11:49:03AM +0200, Tariq Toukan wrote:
> From: Akiva Goldberger <agoldberger@xxxxxxxxxx>
>
> Currently, CQs without a completion function are assigned the
> mlx5_add_cq_to_tasklet function by default. This is problematic since
> only user CQs created through the mlx5_ib driver are intended to use
> this function.
>
> Additionally, all CQs that will use doorbells instead of polling for
> completions must call mlx5_cq_arm. However, the default CQ creation flow
> leaves a valid value in the CQ's arm_db field, allowing FW to send
> interrupts to polling-only CQs in certain corner cases.
>
> These two factors would allow a polling-only kernel CQ to be triggered
> by an EQ interrupt and call a completion function intended only for user
> CQs, causing a null pointer exception.
>
> Some areas in the driver have prevented this issue with one-off fixes
> but did not address the root cause.
>
> This patch fixes the described issue by adding defaults to the create CQ
> flow. It adds a default dummy completion function to protect against
> null pointer exceptions, and it sets an invalid command sequence number
> by default in kernel CQs to prevent the FW from sending an interrupt to
> the CQ until it is armed. User CQs are responsible for their own
> initialization values.
>
> Callers of mlx5_core_create_cq are responsible for changing the
> completion function and arming the CQ per their needs.
>
> Fixes: cdd04f4d4d71 ("net/mlx5: Add support to create SQ and CQ for ASO")
> Signed-off-by: Akiva Goldberger <agoldberger@xxxxxxxxxx>
> Reviewed-by: Moshe Shemesh <moshe@xxxxxxxxxx>
> Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx>
> ---
> drivers/infiniband/hw/mlx5/cq.c | 11 +++++---

It can safely go to net as we already sent our rdma-rc PR to Linus
and won't have any fixes in drivers/infiniband/hw/mlx5/cq.c in this
cycle.

Acked-by: Leon Romanovsky <leon@xxxxxxxxxx>

Thanks

> drivers/net/ethernet/mellanox/mlx5/core/cq.c | 23 +++++++++++++--
> .../net/ethernet/mellanox/mlx5/core/en_main.c | 1 -
> .../ethernet/mellanox/mlx5/core/fpga/conn.c | 15 +++++-----
> .../mellanox/mlx5/core/steering/hws/send.c | 7 -----
> .../mellanox/mlx5/core/steering/sws/dr_send.c | 28 +++++--------------
> drivers/vdpa/mlx5/net/mlx5_vnet.c | 6 ++--
> include/linux/mlx5/cq.h | 1 +
> 8 files changed, 44 insertions(+), 48 deletions(-)