GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

CVE-2025-68181 (GCVE-0-2025-68181)

Vulnerability from cvelistv5 – Published: 2025-12-16 13:42 – Updated: 2026-08-05 12:10
VLAI
Title
drm/radeon: Remove calls to drm_put_dev()
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/radeon: Remove calls to drm_put_dev() Since the allocation of the drivers main structure was changed to devm_drm_dev_alloc() drm_put_dev()'ing to trigger it to be free'd should be done by devres. However, drm_put_dev() is still in the probe error and device remove paths. When the driver fails to probe warnings like the following are shown because devres is trying to drm_put_dev() after the driver already did it. [ 5.642230] radeon 0000:01:05.0: probe with driver radeon failed with error -22 [ 5.649605] ------------[ cut here ]------------ [ 5.649607] refcount_t: underflow; use-after-free. [ 5.649620] WARNING: CPU: 0 PID: 357 at lib/refcount.c:28 refcount_warn_saturate+0xbe/0x110 (cherry picked from commit 3eb8c0b4c091da0a623ade0d3ee7aa4a93df1ea4)
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: a9ed2f052c5c14e4be58c5ec8794dffc87588123 , < 2fa41445d8c98f2a65503c373796466496edc0e7 (git)
Affected: a9ed2f052c5c14e4be58c5ec8794dffc87588123 , < ec18f6b2c743cc471b2539ddb5caed20a012e640 (git)
Affected: a9ed2f052c5c14e4be58c5ec8794dffc87588123 , < 745bae76acdd71709773c129a69deca01036250b (git)
guessed Create a notification for this product.
Linux Linux Affected: 6.12
Unaffected: 0 , < 6.12 (semver)
Unaffected: 6.12.58 , ≤ 6.12.* (semver)
Unaffected: 6.17.8 , ≤ 6.17.* (semver)
Unaffected: 6.18 , ≤ * (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/radeon/radeon_drv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "2fa41445d8c98f2a65503c373796466496edc0e7",
              "status": "affected",
              "version": "a9ed2f052c5c14e4be58c5ec8794dffc87588123",
              "versionType": "git"
            },
            {
              "lessThan": "ec18f6b2c743cc471b2539ddb5caed20a012e640",
              "status": "affected",
              "version": "a9ed2f052c5c14e4be58c5ec8794dffc87588123",
              "versionType": "git"
            },
            {
              "lessThan": "745bae76acdd71709773c129a69deca01036250b",
              "status": "affected",
              "version": "a9ed2f052c5c14e4be58c5ec8794dffc87588123",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/radeon/radeon_drv.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.12"
            },
            {
              "lessThan": "6.12",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.58",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.17.*",
              "status": "unaffected",
              "version": "6.17.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.18",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.58",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.17.8",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18",
                  "versionStartIncluding": "6.12",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/radeon: Remove calls to drm_put_dev()\n\nSince the allocation of the drivers main structure was changed to\ndevm_drm_dev_alloc() drm_put_dev()\u0027ing to trigger it to be free\u0027d\nshould be done by devres.\n\nHowever, drm_put_dev() is still in the probe error and device remove\npaths. When the driver fails to probe warnings like the following are\nshown because devres is trying to drm_put_dev() after the driver\nalready did it.\n\n[    5.642230] radeon 0000:01:05.0: probe with driver radeon failed with error -22\n[    5.649605] ------------[ cut here ]------------\n[    5.649607] refcount_t: underflow; use-after-free.\n[    5.649620] WARNING: CPU: 0 PID: 357 at lib/refcount.c:28 refcount_warn_saturate+0xbe/0x110\n\n(cherry picked from commit 3eb8c0b4c091da0a623ade0d3ee7aa4a93df1ea4)"
        }
      ],
      "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 vulnerable object is the radeon `drm_device`/`radeon_device` reached through local device nodes (`/dev/dri/card*`, `/dev/dri/renderD*`) and local driver bind/unbind/module teardown; there is no network-facing path into radeon_drv.c.\nAC:L - The double `drm_dev_put()` is unconditional on both the probe-error and `.remove` paths \u2014 no race to win and no memory layout the attacker cannot influence, and the attacker chooses when to touch the stale fd, giving an unbounded free-to-use window for heap grooming.\nPR:L - radeon declares `DRIVER_RENDER`, so any unprivileged local user can open the world-accessible render node and hold the `drm_dev_get()` reference whose premature release frees the object under their still-open fd, after which their own `ioctl`/`mmap`/`close` drives the use-after-free.\nUI:N - No victim action is needed \u2014 the attacker\u0027s own open fd plus a routine driver teardown (unbind, module reload, hot-unplug, or shutdown in a VM) is sufficient, and the freed object is then touched by the attacker\u0027s own syscalls.\nS:U - The corruption is confined to kernel heap memory within the same security authority; there is no VM, IOMMU, or sandbox boundary crossed.\nC:H - The freed `radeon_device` container can be reclaimed by attacker-sprayed data and is then read back through `drm_ioctl()`/`dev-\u003edriver` and radeon\u0027s ioctl and postclose paths, yielding an arbitrary kernel-memory read primitive.\nI:H - `refcount_dec_and_test()` writes into freed memory, and `radeon_driver_postclose_kms()` writes `rdev-\u003ehyperz_filp`/`cmask_filp` and manipulates mutexes and VM state in the freed object, giving a write primitive and function-pointer control suitable for privilege escalation.\nA:H - The bug reliably produces a refcount underflow WARN and use-after-free on driver probe failure and on every device removal, causing kernel oops/panic and GPU subsystem failure."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:10:04.239Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/2fa41445d8c98f2a65503c373796466496edc0e7"
        },
        {
          "url": "https://git.kernel.org/stable/c/ec18f6b2c743cc471b2539ddb5caed20a012e640"
        },
        {
          "url": "https://git.kernel.org/stable/c/745bae76acdd71709773c129a69deca01036250b"
        }
      ],
      "title": "drm/radeon: Remove calls to drm_put_dev()",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-68181",
    "datePublished": "2025-12-16T13:42:59.600Z",
    "dateReserved": "2025-12-16T13:41:40.252Z",
    "dateUpdated": "2026-08-05T12:10:04.239Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-68181",
      "date": "2026-09-16",
      "epss": "0.00147",
      "percentile": "0.04303"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-68181\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-12-16T14:15:50.660\",\"lastModified\":\"2026-07-30T06:24:32.440\",\"vulnStatus\":\"Deferred\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/radeon: Remove calls to drm_put_dev()\\n\\nSince the allocation of the drivers main structure was changed to\\ndevm_drm_dev_alloc() drm_put_dev()\u0027ing to trigger it to be free\u0027d\\nshould be done by devres.\\n\\nHowever, drm_put_dev() is still in the probe error and device remove\\npaths. When the driver fails to probe warnings like the following are\\nshown because devres is trying to drm_put_dev() after the driver\\nalready did it.\\n\\n[    5.642230] radeon 0000:01:05.0: probe with driver radeon failed with error -22\\n[    5.649605] ------------[ cut here ]------------\\n[    5.649607] refcount_t: underflow; use-after-free.\\n[    5.649620] WARNING: CPU: 0 PID: 357 at lib/refcount.c:28 refcount_warn_saturate+0xbe/0x110\\n\\n(cherry picked from commit 3eb8c0b4c091da0a623ade0d3ee7aa4a93df1ea4)\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/gpu/drm/radeon/radeon_drv.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"a9ed2f052c5c14e4be58c5ec8794dffc87588123\",\"lessThan\":\"2fa41445d8c98f2a65503c373796466496edc0e7\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"a9ed2f052c5c14e4be58c5ec8794dffc87588123\",\"lessThan\":\"ec18f6b2c743cc471b2539ddb5caed20a012e640\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"a9ed2f052c5c14e4be58c5ec8794dffc87588123\",\"lessThan\":\"745bae76acdd71709773c129a69deca01036250b\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/gpu/drm/radeon/radeon_drv.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.12\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.12\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.58\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.17.8\",\"lessThanOrEqual\":\"6.17.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.18\",\"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/2fa41445d8c98f2a65503c373796466496edc0e7\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/745bae76acdd71709773c129a69deca01036250b\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/ec18f6b2c743cc471b2539ddb5caed20a012e640\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-07-30T10:07:46+00:00",
      "cve": "CVE-2025-68181",
      "id": "CVE-2025-68181",
      "initial_release_date": "2025-12-16T00:00:00+00:00",
      "product_status:known_affected": "198",
      "product_status:known_not_affected": "76",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: drm/radeon: Remove calls to drm_put_dev()",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-68181.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-01T01:00:07Z",
      "cve": "CVE-2025-68181",
      "id": "CVE-2025-68181",
      "initial_release_date": "2025-12-17T00:26:07Z",
      "product_status:first_fixed": "2",
      "product_status:known_affected": "394",
      "product_status:known_not_affected": "472",
      "product_status:recommended": "265",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-68181",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-68181.json",
      "version": "28"
    }
  }
}



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…

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…