---
id: CVE-2025-38521
title: 'drm/imagination: Fix kernel crash when hard resetting the GPU'
summary: |-
  In the Linux kernel, the following vulnerability has been resolved:

  drm/imagination: Fix kernel crash when hard resetting the GPU

  The GPU hard reset sequence calls pm_runtime_force_suspend() and
  pm_runtime_force_resume(), which accordi…
severity: none
vendor: Linux
product: Linux
affected:
  - >-
    Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d <
    9f852d301f642223c4798f3c13ba15e91165d078
  - >-
    Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d <
    e066cc6e0f094ca2120f1928d126d56f686cd73e
  - >-
    Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d <
    d38376b3ee48d073c64e75e150510d7e6b4b04f7
  - Linux 6.8
ssvc:
  exploitation: none
  automatable: 'no'
  technicalImpact: partial
  timestamp: '2026-11-05T20:57:48.793718Z'
published: '2025-08-16'
updated: '2026-11-05'
sourceUpdated: '2026-11-05T21:02:40.703Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2025-38521'
references:
  - url: 'https://git.kernel.org/stable/c/9f852d301f642223c4798f3c13ba15e91165d078'
  - url: 'https://git.kernel.org/stable/c/e066cc6e0f094ca2120f1928d126d56f686cd73e'
  - url: 'https://git.kernel.org/stable/c/d38376b3ee48d073c64e75e150510d7e6b4b04f7'
tags:
  - cve.org
epss: 0.00166
epssPercentile: 0.05869
ingestedAt: '2026-11-05T22:38:31.976Z'
---

## Overview

In the Linux kernel, the following vulnerability has been resolved:

drm/imagination: Fix kernel crash when hard resetting the GPU

The GPU hard reset sequence calls pm_runtime_force_suspend() and
pm_runtime_force_resume(), which according to their documentation should
only be used during system-wide PM transitions to sleep states.

The main issue though is that depending on some internal runtime PM
state as seen by pm_runtime_force_suspend() (whether the usage count is
<= 1), pm_runtime_force_resume() might not resume the device unless
needed. If that happens, the runtime PM resume callback
pvr_power_device_resume() is not called, the GPU clocks are not
re-enabled, and the kernel crashes on the next attempt to access GPU
registers as part of the power-on sequence.

Replace calls to pm_runtime_force_suspend() and
pm_runtime_force_resume() with direct calls to the driver's runtime PM
callbacks, pvr_power_device_suspend() and pvr_power_device_resume(),
to ensure clocks are re-enabled and avoid the kernel crash.

## Affected

- `Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d < 9f852d301f642223c4798f3c13ba15e91165d078`
- `Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d < e066cc6e0f094ca2120f1928d126d56f686cd73e`
- `Linux >= cc1aeedb98ad347c06ff59e991b2f94dfb4c565d < d38376b3ee48d073c64e75e150510d7e6b4b04f7`
- `Linux 6.8`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
