{
  "affected": [
    {
      "ranges": [
        {
          "events": [
            {
              "introduced": "09593216bff15866f95c8ad406cb7fdcec1ee40a"
            },
            {
              "fixed": "831cd124ce99c3e61266bed30519d52f7c26abed"
            },
            {
              "fixed": "f3e74866018dab793ebee1fdf0ef34f7271d1f8c"
            },
            {
              "fixed": "a565022c02f218ec9789c2baf4690792e7a48cbb"
            },
            {
              "fixed": "159720704d9d652b64390c11fb971e15b0a78d23"
            }
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "type": "GIT"
        }
      ]
    },
    {
      "package": {
        "ecosystem": "Linux",
        "name": "Kernel"
      },
      "ranges": [
        {
          "events": [
            {
              "introduced": "6.6.0"
            },
            {
              "fixed": "6.12.111"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.13.0"
            },
            {
              "fixed": "6.18.53"
            }
          ],
          "type": "ECOSYSTEM"
        },
        {
          "events": [
            {
              "introduced": "6.19.0"
            },
            {
              "fixed": "7.2.7"
            }
          ],
          "type": "ECOSYSTEM"
        }
      ]
    }
  ],
  "database_specific": {
    "cna_assigner": "Linux",
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/97xxx/CVE-2026-97900.json"
  },
  "details": "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's 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",
  "modified": "2026-09-27T03:30:22.534570401Z",
  "published": "2026-09-25T10:22:28.057Z",
  "references": [
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/159720704d9d652b64390c11fb971e15b0a78d23"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/831cd124ce99c3e61266bed30519d52f7c26abed"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/a565022c02f218ec9789c2baf4690792e7a48cbb"
    },
    {
      "type": "WEB",
      "url": "https://git.kernel.org/stable/c/f3e74866018dab793ebee1fdf0ef34f7271d1f8c"
    },
    {
      "type": "ADVISORY",
      "url": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/97xxx/CVE-2026-97900.json"
    },
    {
      "type": "ADVISORY",
      "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-97900"
    },
    {
      "type": "PACKAGE",
      "url": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
    }
  ],
  "schema_version": "1.9.0",
  "summary": "drm/drm_exec: fix up contended obj when num_objects is 0"
}