← Back to CVE Explorer

CVE-2026-93170

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: dmaengine: xilinx_dma: Fix channel idle state management in AXIDMA and MCDMA interrupt handlers Fix a race condition in AXIDMA and MCDMA irq handlers where the channel could be incorrectly marked as idle and attempt spurious transfers when descriptors are still being processed. The issue occurs when: 1. Multiple descriptors are queued and active. 2. An interrupt fires after completing some descriptors. 3. xilinx_dma_complete_descriptor() moves completed descriptors to done_list. 4. Channel is marked idle and start_transfer() is called even though active_list still contains unprocessed descriptors. 5. This leads to premature transfer attempts and potential descriptor corruption or missed completions. Only mark the channel as idle and start new transfers when the active list is actually empty, ensuring proper channel state management and avoiding spurious transfer attempts.

Severity
HIGH
CVSS score
7.8 (v3.1)
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-17 17:18:12.700000
Last modified
2026-10-19 10:17:07.313000
View original CVE JSON
{
  "id": "CVE-2026-93170",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-17T17:18:12.700",
  "lastModified": "2026-10-19T10:17:07.313",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndmaengine: xilinx_dma: Fix channel idle state management in AXIDMA and MCDMA interrupt handlers\n\nFix a race condition in AXIDMA and MCDMA irq handlers where the channel\ncould be incorrectly marked as idle and attempt spurious transfers when\ndescriptors are still being processed.\n\nThe issue occurs when:\n1. Multiple descriptors are queued and active.\n2. An interrupt fires after completing some descriptors.\n3. xilinx_dma_complete_descriptor() moves completed descriptors to\ndone_list.\n4. Channel is marked idle and start_transfer() is called even though\n   active_list still contains unprocessed descriptors.\n5. This leads to premature transfer attempts and potential descriptor\n   corruption or missed completions.\n\nOnly mark the channel as idle and start new transfers when the active list\nis actually empty, ensuring proper channel state management and avoiding\nspurious transfer attempts."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/dma/xilinx/xilinx_dma.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "7f4b989d7d87381927b98d64492f8dcf979f57ab",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "5459e02707b27a964ae72e028d3ff72a3b687c4a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "425630e9eea1f9f8912b8c6abf01e0dab1e27917",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "fdaf297ab275c6efecac5e87669c31bc89b74297",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "c27d16fd2358b2fc3e1ffaca03afd11dc28630ea",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "ec927657524be4438447944a58173c7baf7f2384",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "c3e943490ced0b9ad475844eda7661f6a9bcfb4a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "c0bba3a99f0709c24c2c7ada7cb098966b1d791f",
              "lessThan": "0b6d055edb55ecadadf54e930c2b4fab76fa9a5a",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/dma/xilinx/xilinx_dma.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "4.7",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "4.7",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.270",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.221",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.188",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.157",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.110",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.52",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.6",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 7.8,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "LOW",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.8,
        "impactScore": 5.9
      }
    ]
  },
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/0b6d055edb55ecadadf54e930c2b4fab76fa9a5a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/425630e9eea1f9f8912b8c6abf01e0dab1e27917",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/5459e02707b27a964ae72e028d3ff72a3b687c4a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/7f4b989d7d87381927b98d64492f8dcf979f57ab",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/c27d16fd2358b2fc3e1ffaca03afd11dc28630ea",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/c3e943490ced0b9ad475844eda7661f6a9bcfb4a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ec927657524be4438447944a58173c7baf7f2384",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/fdaf297ab275c6efecac5e87669c31bc89b74297",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}