CVE-2022-49978: fbdev: fb_pm2fb: Avoid potential divide by zero error
In the Linux kernel, the following vulnerability has been resolved:
fbdev: fb_pm2fb: Avoid potential divide by zero error
In `do_fb_ioctl()` of fbmem.c, if cmd is FBIOPUT_VSCREENINFO, var will be
copied from user, then go through `fb_set_var()` and
`info->fbops->fb_check_var()` which could may be `pm2fb_check_var()`.
Along the path, `var->pixclock` won't be modified. This function checks
whether reciprocal of `var->pixclock` is too high. If `var->pixclock` is
zero, there will be a divide by zero error. So, it is necessary to check
whether denominator is zero to avoid crash. As this bug is found by
Syzkaller, logs are listed below.
divide error in pm2fb_check_var
Call Trace:
<TASK>
fb_set_var+0x367/0xeb0 drivers/video/fbdev/core/fbmem.c:1015
do_fb_ioctl+0x234/0x670 drivers/video/fbdev/core/fbmem.c:1110
fb_ioctl+0xdd/0x130 drivers/video/fbdev/core/fbmem.c:1189
Security readout for executives and security teams
Plain-English summary
CVE-2022-49978 is a Linux kernel crash bug in the pm2fb framebuffer driver. A zero pixel clock value can reach driver validation and cause a divide-by-zero fault. The business impact is most likely local denial of service on systems using or exposing this driver, not confirmed remote compromise.
Executive priority
Prioritize routine kernel patching for systems with framebuffer use, shared local access, kiosks, embedded displays, or older kernels. Treat it as lower urgency than remotely exploitable kernel bugs unless your environment exposes pm2fb to untrusted local users.
Technical view
The vulnerable path copies FBIOPUT_VSCREENINFO input from user space through do_fb_ioctl(), fb_set_var(), and pm2fb_check_var(). pm2fb_check_var() evaluates a reciprocal involving var->pixclock without first rejecting zero. The upstream fix adds a denominator check to prevent a kernel divide error.
Likely exposure
Exposure appears limited to Linux systems with the pm2fb framebuffer driver available and framebuffer ioctl access reachable by a local user or process. The source bundle does not identify affected distributions, appliances, default configurations, or remote attack paths.
Exploitation context
The record says Syzkaller found the bug and includes a kernel call trace. KEV is false, and the provided sources do not show active exploitation, public weaponization, or remote exploitation evidence.
Researcher notes
Evidence is narrow but concrete: a user-controlled framebuffer ioctl path can preserve pixclock as zero until pm2fb_check_var(), causing a divide error. The bundle provides upstream stable commit references but no CVSS, CWE, distro matrix, or exploitation reports.
Mitigation direction
Apply vendor kernel updates that include the stable pm2fb divide-by-zero fix.
Check Linux distribution or appliance advisories for the exact fixed package version.
Restrict framebuffer device access to trusted users and services where operationally feasible.
If unused, consider disabling pm2fb only when supported by vendor guidance.
Validation and detection
Inventory systems running Linux kernels in the affected version ranges.
Confirm whether pm2fb is built, loaded, or available on each system.
Verify the vendor kernel includes one of the cited stable fixes.
Review framebuffer device permissions and local service access.
Check kernel logs for divide errors referencing pm2fb_check_var or fb_set_var.
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-2022-49978 mapping review
Open the CVE-to-ATT&CK bridge for reviewed, inferred, or future official mappings tied to this CVE.
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
9Source links
Vulnerability timeline
Timeline events are normalized from CVE metadata, CNA source timelines, ADP timelines, and KEV metadata when present.
CVE reservedCVE Program
The CVE ID was reserved by the assigning CNA.
CVE publishedCVE Program
The CVE record was published.
Jun 18, 2025, 11:00 UTC (UTC+00:00)
CVE updatedCVE Program
The CVE record metadata indicates this as the latest update time.