CVE-2026-97900 (GCVE-0-2026-97900)

Vulnerability from cvelistv5 – Published: 2026-09-25 10:22 – Updated: 2026-09-25 10:22
VLAI
Title
drm/drm_exec: fix up contended obj when num_objects is 0
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/drm_exec: fix up contended obj when num_objects is 0 drm_exec_prepare_array() silently returns success without calling drm_exec_lock_contended() when num_objects is zero. This breaks the invariant upheld by drm_exec_lock_obj(), where every entry point into the locking sequence must first attempt to lock any previously contended object before proceeding. Drivers that chain multiple drm_exec_prepare_array() calls per drm_exec_until_all_locked() iteration (e.g. amdgpu's userq signal/wait ioctls, which prepare separate read and write BO arrays) can pass an empty array for one of the two calls. If contention is hit while preparing the non-empty array, exec->contended is set and the loop retries; on retry, the empty-array call preceding it is a no-op that never clears exec->contended, so drm_exec_retry_on_contention() immediately jumps back to the top of the loop without ever reaching the call that would resolve the contention. This spins forever. Fix it by having drm_exec_prepare_array() call drm_exec_lock_contended() directly when num_objects is zero, so a pending contended object dont loop infinitely.
Severity
No CVSS data available.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 09593216bff15866f95c8ad406cb7fdcec1ee40a , < 831cd124ce99c3e61266bed30519d52f7c26abed (git)
Affected: 09593216bff15866f95c8ad406cb7fdcec1ee40a , < f3e74866018dab793ebee1fdf0ef34f7271d1f8c (git)
Affected: 09593216bff15866f95c8ad406cb7fdcec1ee40a , < a565022c02f218ec9789c2baf4690792e7a48cbb (git)
Affected: 09593216bff15866f95c8ad406cb7fdcec1ee40a , < 159720704d9d652b64390c11fb971e15b0a78d23 (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.6
Unaffected: 0 , < 6.6 (semver)
Unaffected: 6.12.111 , ≤ 6.12.* (semver)
Unaffected: 6.18.53 , ≤ 6.18.* (semver)
Unaffected: 7.2.7 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc3 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/drm_exec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "831cd124ce99c3e61266bed30519d52f7c26abed",
              "status": "affected",
              "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
              "versionType": "git"
            },
            {
              "lessThan": "f3e74866018dab793ebee1fdf0ef34f7271d1f8c",
              "status": "affected",
              "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
              "versionType": "git"
            },
            {
              "lessThan": "a565022c02f218ec9789c2baf4690792e7a48cbb",
              "status": "affected",
              "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
              "versionType": "git"
            },
            {
              "lessThan": "159720704d9d652b64390c11fb971e15b0a78d23",
              "status": "affected",
              "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/drm_exec.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.6"
            },
            {
              "lessThan": "6.6",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.111",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.53",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.111",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.53",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.7",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc3",
                  "versionStartIncluding": "6.6",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/drm_exec: fix up contended obj when num_objects is 0\n\ndrm_exec_prepare_array() silently returns success without calling\ndrm_exec_lock_contended() when num_objects is zero. This breaks the\ninvariant upheld by drm_exec_lock_obj(), where every entry point into\nthe locking sequence must first attempt to lock any previously\ncontended object before proceeding.\n\nDrivers that chain multiple drm_exec_prepare_array() calls per\ndrm_exec_until_all_locked() iteration (e.g. amdgpu\u0027s userq signal/wait\nioctls, which prepare separate read and write BO arrays) can pass an\nempty array for one of the two calls. If contention is hit while\npreparing the non-empty array, exec-\u003econtended is set and the loop\nretries; on retry, the empty-array call preceding it is a no-op that\nnever clears exec-\u003econtended, so drm_exec_retry_on_contention()\nimmediately jumps back to the top of the loop without ever reaching\nthe call that would resolve the contention. This spins forever.\n\nFix it by having drm_exec_prepare_array() call drm_exec_lock_contended()\ndirectly when num_objects is zero, so a pending contended object dont\nloop infinitely."
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-25T10:22:28.057Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/831cd124ce99c3e61266bed30519d52f7c26abed"
        },
        {
          "url": "https://git.kernel.org/stable/c/f3e74866018dab793ebee1fdf0ef34f7271d1f8c"
        },
        {
          "url": "https://git.kernel.org/stable/c/a565022c02f218ec9789c2baf4690792e7a48cbb"
        },
        {
          "url": "https://git.kernel.org/stable/c/159720704d9d652b64390c11fb971e15b0a78d23"
        }
      ],
      "title": "drm/drm_exec: fix up contended obj when num_objects is 0",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-97900",
    "datePublished": "2026-09-25T10:22:28.057Z",
    "dateReserved": "2026-09-25T10:18:58.200Z",
    "dateUpdated": "2026-09-25T10:22:28.057Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-97900",
      "date": "2026-09-29",
      "epss": "0.00168",
      "percentile": "0.05404"
    },
    "microsoft_vex": {
      "current_release_date": "2026-09-27T23:46:58.000Z",
      "cve": "CVE-2026-97900",
      "id": "msrc_CVE-2026-97900",
      "initial_release_date": "2026-09-27T23:46:58.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "drm/drm_exec: fix up contended obj when num_objects is 0",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-97900.json",
      "version": "1"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/drm_exec.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "831cd124ce99c3e61266bed30519d52f7c26abed",
                    "status": "affected",
                    "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "f3e74866018dab793ebee1fdf0ef34f7271d1f8c",
                    "status": "affected",
                    "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "a565022c02f218ec9789c2baf4690792e7a48cbb",
                    "status": "affected",
                    "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "159720704d9d652b64390c11fb971e15b0a78d23",
                    "status": "affected",
                    "version": "09593216bff15866f95c8ad406cb7fdcec1ee40a",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "drivers/gpu/drm/drm_exec.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "6.6"
                  },
                  {
                    "lessThan": "6.6",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.111",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.53",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.7",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc3",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/drm_exec: fix up contended obj when num_objects is 0\n\ndrm_exec_prepare_array() silently returns success without calling\ndrm_exec_lock_contended() when num_objects is zero. This breaks the\ninvariant upheld by drm_exec_lock_obj(), where every entry point into\nthe locking sequence must first attempt to lock any previously\ncontended object before proceeding.\n\nDrivers that chain multiple drm_exec_prepare_array() calls per\ndrm_exec_until_all_locked() iteration (e.g. amdgpu\u0027s userq signal/wait\nioctls, which prepare separate read and write BO arrays) can pass an\nempty array for one of the two calls. If contention is hit while\npreparing the non-empty array, exec-\u003econtended is set and the loop\nretries; on retry, the empty-array call preceding it is a no-op that\nnever clears exec-\u003econtended, so drm_exec_retry_on_contention()\nimmediately jumps back to the top of the loop without ever reaching\nthe call that would resolve the contention. This spins forever.\n\nFix it by having drm_exec_prepare_array() call drm_exec_lock_contended()\ndirectly when num_objects is zero, so a pending contended object dont\nloop infinitely."
          }
        ],
        "id": "CVE-2026-97900",
        "lastModified": "2026-09-25T11:17:16.787",
        "metrics": {},
        "published": "2026-09-25T11:17:16.787",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/159720704d9d652b64390c11fb971e15b0a78d23"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/831cd124ce99c3e61266bed30519d52f7c26abed"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a565022c02f218ec9789c2baf4690792e7a48cbb"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/f3e74866018dab793ebee1fdf0ef34f7271d1f8c"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-09-29T17:29:53+00:00",
      "cve": "CVE-2026-97900",
      "id": "CVE-2026-97900",
      "initial_release_date": "2026-09-25T00:00:00+00:00",
      "product_status:known_affected": "183",
      "product_status:known_not_affected": "93",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: drm/drm_exec: fix up contended obj when num_objects is 0",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-97900.json",
      "version": "3"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…