On Sun, Nov 09, 2025 at 11:49:03AM +0200, Tariq Toukan wrote:
> From: Akiva Goldberger <[email protected]>
> 
> 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 <[email protected]>
> Reviewed-by: Moshe Shemesh <[email protected]>
> Signed-off-by: Tariq Toukan <[email protected]>
> ---
>  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 <[email protected]>

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(-)

Reply via email to