Skip to content
Heist/ feed
Back to feed
UnratedFix available

media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path isp4sd_pwron_and_init() holds ops_mutex via guard(mutex) and, on any init failure, jumps to err_deinit and calls isp4sd_pwroff_and_deinit(). That helper takes the same ops_mutex, re-acquiring a non-recursive mutex already held by the current thread, so any init failure deadlocks. Unwind the error path in stages instead, releasing only what each failure point acquired. This also avoids the issues that an unconditional teardown would hit at the earlier failures, such as a runtime-PM underflow from pm_runtime_resume_and_get() and MMIO access while the device is unpowered.

Products
Kernel
Affected versions
Not specified
Fixed versions
7.2.6
CVEs
CVE-2026-90238
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 11:44 UTC · Revision 1

Source evidence

media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path

core-osv · Original source

Published 17 Sept 2026, 16:07 UTC

In the Linux kernel, the following vulnerability has been resolved: media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path isp4sd_pwron_and_init() holds ops_mutex via guard(mutex) and, on any init failure, jumps to err_deinit and calls isp4sd_pwroff_and_deinit(). That helper takes the same ops_mutex, re-acquiring a non-recursive mutex already held by the current thread, so any init failure deadlocks. Unwind the error path in stages instead, releasing only what each failure point acquired. This also avoids the issues that an unconditional teardown would hit at the earlier failures, such as a runtime-PM underflow from pm_runtime_resume_and_get() and MMIO access while the device is unpowered.

osv:CVE-2026-90238

Kernel

Fixed versions: 7.2.6

Complete source record
{
  "id": "2d4dae9d6847d7fa1c56f90e3f54a32209a76ac5ae681d9a3221026b6984c5fe",
  "url": "https://osv.dev/vulnerability/CVE-2026-90238",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: media: amd: isp4: fix self-deadlock in isp4sd_pwron_and_init() error path isp4sd_pwron_and_init() holds ops_mutex via guard(mutex) and, on any init failure, jumps to err_deinit and calls isp4sd_pwroff_and_deinit(). That helper takes the same ops_mutex, re-acquiring a non-recursive mutex already held by the current thread, so any init failure deadlocks. Unwind the error path in stages instead, releasing only what each failure point acquired. This also avoids the issues that an unconditional teardown would hit at the earlier failures, such as a runtime-PM underflow from pm_runtime_resume_and_get() and MMIO access while the device is unpowered.",
    "evidence": "osv:CVE-2026-90238",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "7.2.6",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-90238",
      "aliases": [
        "CVE-2026-90238"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "4e5e7a7ddb4ab9ac35928d7dc72efc8797639dc3"
                },
                {
                  "fixed": "74669cc3483e9729ca26b4e06a096ccdd607db64"
                },
                {
                  "fixed": "ef46d80a7015269a98c9505b5912a83798799199"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90238.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "7.2.0"
                },
                {
                  "fixed": "7.2.6"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-90238.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:34.588673902Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/74669cc3483e9729ca26b4e06a096ccdd607db64",
        "https://git.kernel.org/stable/c/ef46d80a7015269a98c9505b5912a83798799199",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90238.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-90238",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/90xxx/CVE-2026-90238.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-90238",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 502041,
  "published_at": "2026-09-17T16:07:43.159+00:00"
}