← Back to CVE Explorer

CVE-2025-68209

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: mlx5: Fix default values in create CQ 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.

Severity
Not scored
CVSS score
Not available
Vulnerability status
Deferred
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2025-12-16 14:15:53.813000
Last modified
2026-10-30 13:18:18.147000
View original CVE JSON
{
  "id": "CVE-2025-68209",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2025-12-16T14:15:53.813",
  "lastModified": "2026-10-30T13:18:18.147",
  "vulnStatus": "Deferred",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nmlx5: Fix default values in create CQ\n\nCurrently, CQs without a completion function are assigned the\nmlx5_add_cq_to_tasklet function by default. This is problematic since\nonly user CQs created through the mlx5_ib driver are intended to use\nthis function.\n\nAdditionally, all CQs that will use doorbells instead of polling for\ncompletions must call mlx5_cq_arm. However, the default CQ creation flow\nleaves a valid value in the CQ's arm_db field, allowing FW to send\ninterrupts to polling-only CQs in certain corner cases.\n\nThese two factors would allow a polling-only kernel CQ to be triggered\nby an EQ interrupt and call a completion function intended only for user\nCQs, causing a null pointer exception.\n\nSome areas in the driver have prevented this issue with one-off fixes\nbut did not address the root cause.\n\nThis patch fixes the described issue by adding defaults to the create CQ\nflow. It adds a default dummy completion function to protect against\nnull pointer exceptions, and it sets an invalid command sequence number\nby default in kernel CQs to prevent the FW from sending an interrupt to\nthe CQ until it is armed. User CQs are responsible for their own\ninitialization values.\n\nCallers of mlx5_core_create_cq are responsible for changing the\ncompletion function and arming the CQ per their needs."
    },
    {
      "lang": "es",
      "value": "En el kernel de Linux, la siguiente vulnerabilidad ha sido resuelta:\n\nmlx5: Corrige valores predeterminados en la creación de CQ\n\nActualmente, a las CQ sin una función de completado se les asigna la función mlx5_add_cq_to_tasklet por defecto. Esto es problemático ya que solo las CQ de usuario creadas a través del controlador mlx5_ib están destinadas a usar esta función.\n\nAdemás, todas las CQ que usarán 'doorbells' en lugar de sondeo para completados deben llamar a mlx5_cq_arm. Sin embargo, el flujo de creación de CQ por defecto deja un valor válido en el campo arm_db de la CQ, permitiendo que el FW envíe interrupciones a las CQ solo de sondeo en ciertos casos extremos.\n\nEstos dos factores permitirían que una CQ de kernel solo de sondeo fuera activada por una interrupción EQ y llamara a una función de completado destinada solo a CQ de usuario, causando una excepción de puntero nulo.\n\nAlgunas áreas en el controlador han prevenido este problema con correcciones puntuales, pero no abordaron la causa raíz.\n\nEste parche corrige el problema descrito añadiendo valores predeterminados al flujo de creación de CQ. Añade una función de completado ficticia predeterminada para proteger contra excepciones de puntero nulo, y establece un número de secuencia de comando inválido por defecto en las CQ del kernel para evitar que el FW envíe una interrupción a la CQ hasta que esté armada. Las CQ de usuario son responsables de sus propios valores de inicialización.\n\nLos que llaman a mlx5_core_create_cq son responsables de cambiar la función de completado y armar la CQ según sus necesidades."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/infiniband/hw/mlx5/cq.c",
            "drivers/net/ethernet/mellanox/mlx5/core/cq.c",
            "drivers/net/ethernet/mellanox/mlx5/core/en_main.c",
            "drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c",
            "drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c",
            "drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_send.c",
            "drivers/vdpa/mlx5/net/mlx5_vnet.c",
            "include/linux/mlx5/cq.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "cdd04f4d4d71cbf93d0d9abe63bc838f47c467fa",
              "lessThan": "5c08079c3e5a3c1573afcb5643b5d296865d1170",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "cdd04f4d4d71cbf93d0d9abe63bc838f47c467fa",
              "lessThan": "1a7865e3e4de2830d8a9fe8c273dc10b248b7338",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "cdd04f4d4d71cbf93d0d9abe63bc838f47c467fa",
              "lessThan": "a39d334c9840705af69f0466f8f0129c366004ca",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "cdd04f4d4d71cbf93d0d9abe63bc838f47c467fa",
              "lessThan": "08469f5393a1a39f26a6e2eb2e8c33187665c1f4",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "cdd04f4d4d71cbf93d0d9abe63bc838f47c467fa",
              "lessThan": "e5eba42f01340f73888dfe560be2806057c25913",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/infiniband/hw/mlx5/cq.c",
            "drivers/net/ethernet/mellanox/mlx5/core/cq.c",
            "drivers/net/ethernet/mellanox/mlx5/core/en_main.c",
            "drivers/net/ethernet/mellanox/mlx5/core/fpga/conn.c",
            "drivers/net/ethernet/mellanox/mlx5/core/steering/hws/send.c",
            "drivers/net/ethernet/mellanox/mlx5/core/steering/sws/dr_send.c",
            "drivers/vdpa/mlx5/net/mlx5_vnet.c",
            "include/linux/mlx5/cq.h"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.0",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.0",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.191",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.160",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.114",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.17.9",
              "lessThanOrEqual": "6.17.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {},
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/08469f5393a1a39f26a6e2eb2e8c33187665c1f4",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/1a7865e3e4de2830d8a9fe8c273dc10b248b7338",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/5c08079c3e5a3c1573afcb5643b5d296865d1170",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/a39d334c9840705af69f0466f8f0129c366004ca",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e5eba42f01340f73888dfe560be2806057c25913",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}