« Volver al listado

CVE-2026-98344

Estado: RecibidaSin puntuar—

In the Linux kernel, the following vulnerability has been resolved:

dmaengine: Fix device kref underflow in dma_chan_put()

dma_chan_get() takes chan->device->ref only on the slow path:

dma_chan_put() drops the ref unconditionally, so every fast-path get/put pair drops one extra device reference.

The bug fires when two conditions hold together: a non-private provider has a persistent client holding chan->client_count > 0 and another client cycles dmaengine_get()/dmaengine_put(). When the kref hits zero, the subsequent dma_find_channel() returns NULL even though the provider module is still loaded.

Fix this by dropping device->ref only on the last put, matching the single slow-path get.

Detalles técnicos trazas, registros y código del informe original
	/* no kref on fast path */
	if (chan->client_count) {
		__module_get(owner);
		chan->client_count++;
		return 0;
	}
	if (!try_module_get(owner))
		return -ENODEV;
	if (!dma_device_get(chan->device)) { // calls kref_get_unless_zero()

CVSS

NVD no ha asignado puntuación CVSS a esta CVE (habitual desde el cambio de política de abril de 2026).

Probabilidad de explotación (EPSS)

EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).

Tecnologías afectadas (1)

⚠ Inferidas por IA a partir de la descripción — NVD aún no ha analizado esta CVE; no son CPE verificados.

Referencias

JSON original (NVD)

Mostrar
{
  "id": "CVE-2026-98344",
  "cveTags": [],
  "metrics": {},
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "036b527f92570206da4b8c40b38f8d689e29d0f3",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "5fb1797a8c9485e40e5492fa0338ab5c7d1f3fef",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "57f7f1c6827be7d8f80feca48d2125fb91c6f6ed",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "7c3f4ce651d43705f9ec7f778f642a90d5ff4fba",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "de2677e57d3161390d8a508f08cddec6ef7e4b23",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "1a0d9b406febf23054ad595fd47b29325e70fb2d",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "77906ac448d2fa81fa710ae26c0e591ebdc81154",
              "versionType": "git"
            },
            {
              "status": "affected",
              "version": "8ad342a863590b24ce77681b7e081363fb3333f7",
              "lessThan": "44dab659064eb5c10adb0306510eebe848ed592d",
              "versionType": "git"
            }
          ],
          "programFiles": [
            "drivers/dma/dmaengine.c"
          ],
          "defaultStatus": "unaffected"
        },
        {
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "product": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.6"
            },
            {
              "status": "unaffected",
              "version": "0",
              "lessThan": "5.6",
              "versionType": "semver"
            },
            {
              "status": "unaffected",
              "version": "5.10.271",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "status": "unaffected",
              "version": "5.15.222",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "status": "unaffected",
              "version": "6.1.189",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "status": "unaffected",
              "version": "6.6.158",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "status": "unaffected",
              "version": "6.18.54",
              "versionType": "semver",
              "lessThanOrEqual": "6.18.*"
            },
            {
              "status": "unaffected",
              "version": "7.2.8",
              "versionType": "semver",
              "lessThanOrEqual": "7.2.*"
            },
            {
              "status": "unaffected",
              "version": "7.3-rc4",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ],
          "programFiles": [
            "drivers/dma/dmaengine.c"
          ],
          "defaultStatus": "affected"
        }
      ]
    }
  ],
  "published": "2026-10-06T09:18:27.323",
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/036b527f92570206da4b8c40b38f8d689e29d0f3",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/1a0d9b406febf23054ad595fd47b29325e70fb2d",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/44dab659064eb5c10adb0306510eebe848ed592d",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/57f7f1c6827be7d8f80feca48d2125fb91c6f6ed",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/5fb1797a8c9485e40e5492fa0338ab5c7d1f3fef",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/77906ac448d2fa81fa710ae26c0e591ebdc81154",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/7c3f4ce651d43705f9ec7f778f642a90d5ff4fba",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/de2677e57d3161390d8a508f08cddec6ef7e4b23",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ],
  "vulnStatus": "Received",
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndmaengine: Fix device kref underflow in dma_chan_put()\n\ndma_chan_get() takes chan->device->ref only on the slow path:\n\n\t/* no kref on fast path */\n\tif (chan->client_count) {\n\t\t__module_get(owner);\n\t\tchan->client_count++;\n\t\treturn 0;\n\t}\n\tif (!try_module_get(owner))\n\t\treturn -ENODEV;\n\tif (!dma_device_get(chan->device)) { // calls kref_get_unless_zero()\n\ndma_chan_put() drops the ref unconditionally, so every fast-path\nget/put pair drops one extra device reference.\n\nThe bug fires when two conditions hold together: a non-private\nprovider has a persistent client holding chan->client_count > 0\nand another client cycles dmaengine_get()/dmaengine_put().\nWhen the kref hits zero, the subsequent dma_find_channel() returns\nNULL even though the provider module is still loaded.\n\nFix this by dropping device->ref only on the last put, matching the\nsingle slow-path get."
    }
  ],
  "lastModified": "2026-10-06T09:18:27.323",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
}