CVE-2026-74446 (GCVE-0-2026-74446)

Vulnerability from cvelistv5 – Published: 2026-08-15 12:26 – Updated: 2026-08-19 16:36
VLAI
Title
drm/amdkfd: hold event_mutex while checkpointing CRIU events
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amdkfd: hold event_mutex while checkpointing CRIU events kfd_criu_checkpoint_events() counts the entries in p->event_idr via kfd_get_num_events(), allocates an array sized to that count, and then walks the same IDR to fill it. Neither the count nor the walk holds p->event_mutex. The CRIU checkpoint caller holds only p->mutex. Event create and destroy (kfd_event_create()/kfd_event_destroy()) take p->event_mutex and do not take p->mutex, so a second thread in the same process can insert or remove events between the count and the walk. If an event is inserted, the walk iterates more entries than were counted and writes past the end of the ev_privs allocation; if an event is removed, the walk dereferences an entry that is being freed. Hold p->event_mutex across the count and the walk so both observe a consistent view of p->event_idr. The lock is released before copy_to_user(), which only touches the local buffer. The caller already holds p->mutex and the create/destroy paths never take p->mutex, so the p->mutex -> p->event_mutex order is not inverted and no deadlock is introduced. (cherry picked from commit ff57e223ab105795b05d3ef3f3c35a5a441bcbaa)
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < 8f7196f25b14f4290738639a50459b56a5ff2784 (git)
Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < 2040b7e39027cb83bb8c7b84a4c95c2f6053c32f (git)
Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < 9a7f765985f64fd4a7a58f7bc9cd80a1f4230628 (git)
Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < 6a52f48157fa7fb81e0c146937fd6c8b0c1cfdbd (git)
Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < bed80be08c0bee47fa242a4256ac873477c815f8 (git)
Affected: 40e8a766a761f7fdc8530347527b344fddf6f1a8 , < ff8bc5a68a9a70bdc38d61a72c7a49c56063f9d2 (git)
guessed Create a notification for this product.
Linux Linux Affected: 5.18
Unaffected: 0 , < 5.18 (semver)
Unaffected: 6.1.183 , ≤ 6.1.* (semver)
Unaffected: 6.6.151 , ≤ 6.6.* (semver)
Unaffected: 6.12.103 , ≤ 6.12.* (semver)
Unaffected: 6.18.44 , ≤ 6.18.* (semver)
Unaffected: 7.1.8 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (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/amd/amdkfd/kfd_events.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8f7196f25b14f4290738639a50459b56a5ff2784",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            },
            {
              "lessThan": "2040b7e39027cb83bb8c7b84a4c95c2f6053c32f",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            },
            {
              "lessThan": "9a7f765985f64fd4a7a58f7bc9cd80a1f4230628",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            },
            {
              "lessThan": "6a52f48157fa7fb81e0c146937fd6c8b0c1cfdbd",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            },
            {
              "lessThan": "bed80be08c0bee47fa242a4256ac873477c815f8",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            },
            {
              "lessThan": "ff8bc5a68a9a70bdc38d61a72c7a49c56063f9d2",
              "status": "affected",
              "version": "40e8a766a761f7fdc8530347527b344fddf6f1a8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/amdkfd/kfd_events.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.18"
            },
            {
              "lessThan": "5.18",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.183",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.151",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.103",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.44",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.183",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.151",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.103",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.44",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.8",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "5.18",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amdkfd: hold event_mutex while checkpointing CRIU events\n\nkfd_criu_checkpoint_events() counts the entries in p-\u003eevent_idr via\nkfd_get_num_events(), allocates an array sized to that count, and then\nwalks the same IDR to fill it. Neither the count nor the walk holds\np-\u003eevent_mutex.\n\nThe CRIU checkpoint caller holds only p-\u003emutex. Event create and destroy\n(kfd_event_create()/kfd_event_destroy()) take p-\u003eevent_mutex and do not\ntake p-\u003emutex, so a second thread in the same process can insert or remove\nevents between the count and the walk. If an event is inserted, the walk\niterates more entries than were counted and writes past the end of the\nev_privs allocation; if an event is removed, the walk dereferences an\nentry that is being freed.\n\nHold p-\u003eevent_mutex across the count and the walk so both observe a\nconsistent view of p-\u003eevent_idr. The lock is released before\ncopy_to_user(), which only touches the local buffer. The caller already\nholds p-\u003emutex and the create/destroy paths never take p-\u003emutex, so the\np-\u003emutex -\u003e p-\u003eevent_mutex order is not inverted and no deadlock is\nintroduced.\n\n(cherry picked from commit ff57e223ab105795b05d3ef3f3c35a5a441bcbaa)"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The bug is reached only through AMDKFD_IOC_CRIU_OP_CHECKPOINT on /dev/kfd, a local character-device ioctl in the amdgpu/amdkfd GPU compute stack, not via any network-facing kernel service.\nAC:L - Exploitation needs a race between CRIU checkpoint and concurrent event create/destroy in the same KFD process; the attacker controls both threads and can repeat the ioctl and event churn until the TOCTOU window is hit reliably.\nPR:L - CRIU checkpoint requires CAP_CHECKPOINT_RESTORE or CAP_SYS_ADMIN, both obtainable by an unprivileged user via a user namespace (same model as other namespace-granted caps); GPU tenant access to /dev/kfd on ROCm/HPC nodes is sufficient.\nUI:N - No victim interaction is required beyond the attacker opening /dev/kfd and driving CRIU checkpoint and event ioctls from their own process threads.\nS:U - Impact is kernel heap corruption and privilege escalation within the host kernel security domain; it does not cross a guest/host or IOMMU/DMA trust boundary on its own.\nC:H - Concurrent event removal causes the checkpoint walk to dereference kfd_event objects being freed (UAF), and OOB writes of 64-byte kfd_criu_event_priv_data entries can corrupt adjacent kernel memory to leak data.\nI:H - If events are inserted between kfd_get_num_events() and the IDR walk, the checkpoint loop writes past the end of the kvzalloc ev_privs buffer, enabling heap overflow and control of freed-object contents for arbitrary write primitives.\nA:H - The UAF and heap out-of-bounds write can trigger kernel oops/panic during checkpoint or corrupt critical kernel structures, causing denial of service or system crash."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-19T16:36:41.097Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8f7196f25b14f4290738639a50459b56a5ff2784"
        },
        {
          "url": "https://git.kernel.org/stable/c/2040b7e39027cb83bb8c7b84a4c95c2f6053c32f"
        },
        {
          "url": "https://git.kernel.org/stable/c/9a7f765985f64fd4a7a58f7bc9cd80a1f4230628"
        },
        {
          "url": "https://git.kernel.org/stable/c/6a52f48157fa7fb81e0c146937fd6c8b0c1cfdbd"
        },
        {
          "url": "https://git.kernel.org/stable/c/bed80be08c0bee47fa242a4256ac873477c815f8"
        },
        {
          "url": "https://git.kernel.org/stable/c/ff8bc5a68a9a70bdc38d61a72c7a49c56063f9d2"
        }
      ],
      "title": "drm/amdkfd: hold event_mutex while checkpointing CRIU events",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-74446",
    "datePublished": "2026-08-15T12:26:52.677Z",
    "dateReserved": "2026-08-15T05:44:03.898Z",
    "dateUpdated": "2026-08-19T16:36:41.097Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-74446",
      "date": "2026-08-28",
      "epss": "0.00129",
      "percentile": "0.02851"
    },
    "microsoft_vex": {
      "current_release_date": "2026-08-23T15:03:28.000Z",
      "cve": "CVE-2026-74446",
      "id": "msrc_CVE-2026-74446",
      "initial_release_date": "2026-08-23T15:03:28.000Z",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "drm/amdkfd: hold event_mutex while checkpointing CRIU events",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-74446.json",
      "version": "1"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-74446\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-15T13:17:49.180\",\"lastModified\":\"2026-08-19T17:21:01.813\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/amdkfd: hold event_mutex while checkpointing CRIU events\\n\\nkfd_criu_checkpoint_events() counts the entries in p-\u003eevent_idr via\\nkfd_get_num_events(), allocates an array sized to that count, and then\\nwalks the same IDR to fill it. Neither the count nor the walk holds\\np-\u003eevent_mutex.\\n\\nThe CRIU checkpoint caller holds only p-\u003emutex. Event create and destroy\\n(kfd_event_create()/kfd_event_destroy()) take p-\u003eevent_mutex and do not\\ntake p-\u003emutex, so a second thread in the same process can insert or remove\\nevents between the count and the walk. If an event is inserted, the walk\\niterates more entries than were counted and writes past the end of the\\nev_privs allocation; if an event is removed, the walk dereferences an\\nentry that is being freed.\\n\\nHold p-\u003eevent_mutex across the count and the walk so both observe a\\nconsistent view of p-\u003eevent_idr. The lock is released before\\ncopy_to_user(), which only touches the local buffer. The caller already\\nholds p-\u003emutex and the create/destroy paths never take p-\u003emutex, so the\\np-\u003emutex -\u003e p-\u003eevent_mutex order is not inverted and no deadlock is\\nintroduced.\\n\\n(cherry picked from commit ff57e223ab105795b05d3ef3f3c35a5a441bcbaa)\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/gpu/drm/amd/amdkfd/kfd_events.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"8f7196f25b14f4290738639a50459b56a5ff2784\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"2040b7e39027cb83bb8c7b84a4c95c2f6053c32f\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"9a7f765985f64fd4a7a58f7bc9cd80a1f4230628\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"6a52f48157fa7fb81e0c146937fd6c8b0c1cfdbd\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"bed80be08c0bee47fa242a4256ac873477c815f8\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"40e8a766a761f7fdc8530347527b344fddf6f1a8\",\"lessThan\":\"ff8bc5a68a9a70bdc38d61a72c7a49c56063f9d2\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/gpu/drm/amd/amdkfd/kfd_events.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"5.18\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"5.18\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.1.183\",\"lessThanOrEqual\":\"6.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.6.151\",\"lessThanOrEqual\":\"6.6.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.103\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18.44\",\"lessThanOrEqual\":\"6.18.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.8\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"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/2040b7e39027cb83bb8c7b84a4c95c2f6053c32f\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6a52f48157fa7fb81e0c146937fd6c8b0c1cfdbd\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/8f7196f25b14f4290738639a50459b56a5ff2784\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/9a7f765985f64fd4a7a58f7bc9cd80a1f4230628\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/bed80be08c0bee47fa242a4256ac873477c815f8\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ff8bc5a68a9a70bdc38d61a72c7a49c56063f9d2\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Important",
      "current_release_date": "2026-08-21T07:02:49+00:00",
      "cve": "CVE-2026-74446",
      "id": "CVE-2026-74446",
      "initial_release_date": "2026-08-15T00:00:00+00:00",
      "product_status:known_affected": "232",
      "product_status:known_not_affected": "28",
      "product_status:under_investigation": "14",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: drm/amdkfd: hold event_mutex while checkpointing CRIU events",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-74446.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…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…