LiveActive security incident?Get immediate response
CVE Record

CVE-2025-21977: fbdev: hyperv_fb: Fix hang in kdump kernel when on Hyper-V Gen 2 VMs

In the Linux kernel, the following vulnerability has been resolved: fbdev: hyperv_fb: Fix hang in kdump kernel when on Hyper-V Gen 2 VMs Gen 2 Hyper-V VMs boot via EFI and have a standard EFI framebuffer device. When the kdump kernel runs in such a VM, loading the efifb driver may hang because of accessing the framebuffer at the wrong memory address. The scenario occurs when the hyperv_fb driver in the original kernel moves the framebuffer to a different MMIO address because of conflicts with an already-running efifb or simplefb driver. The hyperv_fb driver then informs Hyper-V of the change, which is allowed by the Hyper-V FB VMBus device protocol. However, when the kexec command loads the kdump kernel into crash memory via the kexec_file_load() system call, the system call doesn't know the framebuffer has moved, and it sets up the kdump screen_info using the original framebuffer address. The transition to the kdump kernel does not go through the Hyper-V host, so Hyper-V does not reset the framebuffer address like it would do on a reboot. When efifb tries to run, it accesses a non-existent framebuffer address, which traps to the Hyper-V host. After many such accesses, the Hyper-V host thinks the guest is being malicious, and throttles the guest to the point that it runs very slowly or appears to have hung. When the kdump kernel is loaded into crash memory via the kexec_load() system call, the problem does not occur. In this case, the kexec command builds the screen_info table itself in user space from data returned by the FBIOGET_FSCREENINFO ioctl against /dev/fb0, which gives it the new framebuffer location. This problem was originally reported in 2020 [1], resulting in commit 3cb73bc3fa2a ("hyperv_fb: Update screen_info after removing old framebuffer"). This commit solved the problem by setting orig_video_isVGA to 0, so the kdump kernel was unaware of the EFI framebuffer. The efifb driver did not try to load, and no hang occurred. But in 2024, commit c25a19afb81c ("fbdev/hyperv_fb: Do not clear global screen_info") effectively reverted 3cb73bc3fa2a. Commit c25a19afb81c has no reference to 3cb73bc3fa2a, so perhaps it was done without knowing the implications that were reported with 3cb73bc3fa2a. In any case, as of commit c25a19afb81c, the original problem came back again. Interestingly, the hyperv_drm driver does not have this problem because it never moves the framebuffer. The difference is that the hyperv_drm driver removes any conflicting framebuffers *before* allocating an MMIO address, while the hyperv_fb drivers removes conflicting framebuffers *after* allocating an MMIO address. With the "after" ordering, hyperv_fb may encounter a conflict and move the framebuffer to a different MMIO address. But the conflict is essentially bogus because it is removed a few lines of code later. Rather than fix the problem with the approach from 2020 in commit 3cb73bc3fa2a, instead slightly reorder the steps in hyperv_fb so conflicting framebuffers are removed before allocating an MMIO address. Then the default framebuffer MMIO address should always be available, and there's never any confusion about which framebuffer address the kdump kernel should use -- it's always the original address provided by the Hyper-V host. This approach is already used by the hyperv_drm driver, and is consistent with the usage guidelines at the head of the module with the function aperture_remove_conflicting_devices(). This approach also solves a related minor problem when kexec_load() is used to load the kdump kernel. With current code, unbinding and rebinding the hyperv_fb driver could result in the framebuffer moving back to the default framebuffer address, because on the rebind there are no conflicts. If such a move is done after the kdump kernel is loaded with the new framebuffer address, at kdump time it could again have the wrong address. This problem and fix are described in terms of the kdump kernel, but it can also occur ---truncated---

UnknownCVSS not scoredNot KEV-listedUpdated
Glexia's TakeAutomated analysismoderate

Security readout for executives and security teams

Plain-English summary

This Linux kernel issue can make crash-dump recovery hang on Hyper-V Generation 2 virtual machines. The business impact is mainly failed diagnostics during a kernel crash, which can slow incident response and root-cause analysis. The source bundle does not show data theft, remote compromise, or active exploitation.

Executive priority

Treat as a targeted reliability fix for virtualized Linux recovery operations. Patch on normal kernel-maintenance timelines, faster for systems where crash forensics, regulatory evidence, or production recovery depends on kdump.

Technical view

In hyperv_fb, framebuffer MMIO relocation can leave kdump screen_info pointing at the original EFI framebuffer address when kdump is loaded through kexec_file_load(). efifb then accesses a non-existent address, causing Hyper-V host throttling and an apparent kdump kernel hang. Stable commits reorder framebuffer conflict removal before MMIO allocation.

Likely exposure

Exposure appears limited to Linux kernels on Hyper-V Gen 2 VMs using hyperv_fb, EFI framebuffer behavior, and kdump paths affected by kexec_file_load(). The bundle lists Linux kernel versions including 6.8, 6.12.20, 6.13.8, and 6.14 as affected, but distributor backports may change exposure.

Exploitation context

The bundle marks KEV false and provides no cited evidence of active exploitation. This is an operational reliability vulnerability, triggered around crash-dump kernel loading and framebuffer handling, not a documented remote attack path.

Researcher notes

The key condition is stale kdump screen_info after hyperv_fb moves the framebuffer MMIO address. The fix aligns hyperv_fb ordering with hyperv_drm behavior by removing conflicting framebuffers before MMIO allocation. Evidence is limited to the CVE record and kernel stable references.

Mitigation direction

  • Apply vendor or stable kernel updates containing the referenced hyperv_fb fixes.
  • Prioritize Hyper-V Gen 2 Linux VMs where kdump reliability is required.
  • Check distribution advisories before assuming upstream version numbers map directly.
  • Where supported, avoid affected kexec_file_load kdump paths until patched.

Validation and detection

  • Inventory Linux Hyper-V Gen 2 VMs and identify kernel versions in use.
  • Confirm whether hyperv_fb, efifb, and kdump are enabled on those systems.
  • Check whether referenced stable commits are present or backported.
  • Test crash-dump collection in staging after kernel updates.
Prepared
Confidence
high
Sources
5

Generated from the cited source records. This long-tail analysis has not been individually reviewed by a named human.

Potential ATT&CK relevance

Conservative CVE-to-ATT&CK context

These mappings and lookup hints may be relevant to the vulnerability behavior, CWE, affected product, or exposure path. Glexia-inferred context is not an official MITRE, ATT&CK, CWE, or CVE Program mapping.

ATT&CK lookup starting points

Use these exact CWE pages and searches to review the Glexia ATT&CK library from this CVE's weakness and description context.

cve · low confidence lookup

CVE-2025-21977 mapping review

Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.

Open ATT&CK lookup
Vulnerability profileCVE Program record
Severity
Unknown
CVSS
Not scored
Known Exploited
No
Published
Official CVE source material

CNA and ADP enrichment extracted from CVE v5

These fields come from the CVE record and ADP containers, not from Glexia's Take. They preserve time-varying source decisions such as CISA SSVC, KEV status, CVSS metrics, and provider references.

0CVSS vectors
3Timeline events
0ADP providers
4Source links

Vulnerability timeline

Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.

  1. CVE reservedCVE Program

    The CVE ID was reserved by the assigning CNA.

  2. CVE publishedCVE Program

    The CVE record was published.

  3. CVE updatedCVE Program

    The CVE record metadata indicates this as the latest update time.

Affected products

Products and packages named in the record

VendorProductVersion / packageStatus
LinuxLinuxc25a19afb81cfd73dab494ba64f9a434cf1a4499, c25a19afb81cfd73dab494ba64f9a434cf1a4499, c25a19afb81cfd73dab494ba64f9a434cf1a4499unaffected
LinuxLinux6.8, 0, 6.12.20, 6.13.8, 6.14affected
Weakness

CWE details

No CWE listed

CWE links open Glexia weakness intelligence pages with official CWE context, developer remediation guidance, and related CVE mappings.