2025-10-31 9:41CVE-2025-40106Linux
PUBLISHED5.2

comedi: fix divide-by-zero in comedi_buf_munge()

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

comedi: fix divide-by-zero in comedi_buf_munge()

The comedi_buf_munge() function performs a modulo operation

`async->munge_chan %= async->cmd.chanlist_len` without first

checking if chanlist_len is zero. If a user program submits a command with

chanlist_len set to zero, this causes a divide-by-zero error when the device

processes data in the interrupt handler path.

Add a check for zero chanlist_len at the beginning of the

function, similar to the existing checks for !map and

CMDF_RAWDATA flag. When chanlist_len is zero, update

munge_count and return early, indicating the data was

handled without munging.

This prevents potential kernel panics from malformed user commands.

Affected products

Linux

Linux

< 4ffea48c69cb2b96a281cb7e5e42d706996631db - AFFECTED

< 8f3e4cd9be4b47246ea73ce5e3e0fa2f57f0d10c - AFFECTED

< 2670932f2465793fea1ef073e40883e8390fa4d9 - AFFECTED

< 6db19822512396be1a3e1e20c16c97270285ba1a - AFFECTED

< d4854eff25efb06d0d84c13e7129bbdba4125f8c - AFFECTED

< a4bb5d1bc2f238461bcbe5303eb500466690bb2c - AFFECTED

< 55520f65fd447e04099a2c44185453c18ea73b7e - AFFECTED

< 87b318ba81dda2ee7b603f4f6c55e78ec3e95974 - AFFECTED

Linux

<= 5.4.* - UNAFFECTED

<= 5.10.* - UNAFFECTED

<= 5.15.* - UNAFFECTED

<= 6.1.* - UNAFFECTED

<= 6.6.* - UNAFFECTED

<= 6.12.* - UNAFFECTED

<= 6.17.* - UNAFFECTED

<= * - UNAFFECTED

References

JSON source

Click to expand
{
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "cveMetadata": {
    "cveId": "CVE-2025-40106",
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "dateUpdated": "2025-10-31T09:41:46.740Z",
    "dateReserved": "2025-04-16T07:20:57.166Z",
    "datePublished": "2025-10-31T09:41:46.740Z",
    "state": "PUBLISHED"
  },
  "containers": {
    "cna": {
      "providerMetadata": {
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux",
        "dateUpdated": "2025-10-31T09:41:46.740Z"
      },
      "title": "comedi: fix divide-by-zero in comedi_buf_munge()",
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ncomedi: fix divide-by-zero in comedi_buf_munge()\n\nThe comedi_buf_munge() function performs a modulo operation\n`async->munge_chan %= async->cmd.chanlist_len` without first\nchecking if chanlist_len is zero. If a user program submits a command with\nchanlist_len set to zero, this causes a divide-by-zero error when the device\nprocesses data in the interrupt handler path.\n\nAdd a check for zero chanlist_len at the beginning of the\nfunction, similar to the existing checks for !map and\nCMDF_RAWDATA flag. When chanlist_len is zero, update\nmunge_count and return early, indicating the data was\nhandled without munging.\n\nThis prevents potential kernel panics from malformed user commands."
        }
      ],
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "programFiles": [
            "drivers/comedi/comedi_buf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "4ffea48c69cb2b96a281cb7e5e42d706996631db"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "8f3e4cd9be4b47246ea73ce5e3e0fa2f57f0d10c"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "2670932f2465793fea1ef073e40883e8390fa4d9"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "6db19822512396be1a3e1e20c16c97270285ba1a"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "d4854eff25efb06d0d84c13e7129bbdba4125f8c"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "a4bb5d1bc2f238461bcbe5303eb500466690bb2c"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "55520f65fd447e04099a2c44185453c18ea73b7e"
            },
            {
              "version": "1da177e4c3f41524e886b7f1b8a0c1fc7321cac2",
              "status": "affected",
              "versionType": "git",
              "lessThan": "87b318ba81dda2ee7b603f4f6c55e78ec3e95974"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "programFiles": [
            "drivers/comedi/comedi_buf.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "5.4.301",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.4.*"
            },
            {
              "version": "5.10.246",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.10.*"
            },
            {
              "version": "5.15.196",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "5.15.*"
            },
            {
              "version": "6.1.158",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.1.*"
            },
            {
              "version": "6.6.115",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.6.*"
            },
            {
              "version": "6.12.56",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.12.*"
            },
            {
              "version": "6.17.6",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "6.17.*"
            },
            {
              "version": "6.18-rc3",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ],
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/4ffea48c69cb2b96a281cb7e5e42d706996631db"
        },
        {
          "url": "https://git.kernel.org/stable/c/8f3e4cd9be4b47246ea73ce5e3e0fa2f57f0d10c"
        },
        {
          "url": "https://git.kernel.org/stable/c/2670932f2465793fea1ef073e40883e8390fa4d9"
        },
        {
          "url": "https://git.kernel.org/stable/c/6db19822512396be1a3e1e20c16c97270285ba1a"
        },
        {
          "url": "https://git.kernel.org/stable/c/d4854eff25efb06d0d84c13e7129bbdba4125f8c"
        },
        {
          "url": "https://git.kernel.org/stable/c/a4bb5d1bc2f238461bcbe5303eb500466690bb2c"
        },
        {
          "url": "https://git.kernel.org/stable/c/55520f65fd447e04099a2c44185453c18ea73b7e"
        },
        {
          "url": "https://git.kernel.org/stable/c/87b318ba81dda2ee7b603f4f6c55e78ec3e95974"
        }
      ]
    }
  }
}

Mitre source

https://cveawg.mitre.org/api/cve/CVE-2025-40106