CVE-2026-80700

drm/vmwgfx: validate external BO copy bounds for both stride paths

State
Published
Severity
7.8 High
Published
Aug 28, 2026
Updated
Oct 16, 2026
Reserved
Aug 26, 2026

Read the record on cve.org

Description

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

drm/vmwgfx: validate external BO copy bounds for both stride paths

vmw_external_bo_copy() trusts caller-supplied offsets, strides, and heights and operates on imported dma-buf vmaps:

- The equal-stride memcpy() bound was clamped after subtracting the offsets from dst_size and src_size; an offset larger than the BO size wraps the unsigned subtraction to a huge value and the resulting memcpy() runs off the end of the vmap. dst_stride * height is also a u32 multiplication that can overflow. - The non-equal-stride row-by-row path had no bound at all. The loop touches bytes through offset + (height - 1) * stride + width_in_bytes, with only a WARN_ON(dst_stride < width_in_bytes), and could likewise step past the end of either mapping.

The offsets and strides are derived from STDU/SOU plane state, so a configured CRTC submitting a crafted atomic commit on an imported framebuffer can reach this path.

Validate the exact row-copy endpoint against each BO's size up front using check_mul_overflow() and check_add_overflow(). Use the bulk memcpy() path only when width_in_bytes covers the whole stride; otherwise copy one row at a time so partial-row updates near the bottom of a framebuffer remain valid. Also reject zero strides and stride < width_in_bytes, both of which the row-by-row path cannot represent safely.

Scores

CVSSScoreVectorSource
3.17.8 HighCVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:HLinux

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 9a9716bbbf3dd6b6cbefba3abcc89af8b72631f4 to before 4e0f669e2951b742239c6fe847fcc406fe78748dAffected
  • 50f1199250912568606b3778dc56646c10cb7b04 to before e7b25a6011781ebfdbc458552cae6d4156732771Affected
  • 50f1199250912568606b3778dc56646c10cb7b04 to before 042ca38779554687fc32b66a28328e0d9a36c58fAffected
  • 50f1199250912568606b3778dc56646c10cb7b04 to before 5e4a2d15637a906cbd9bc98e0bf969f5f713e344Affected
  • 50f1199250912568606b3778dc56646c10cb7b04 to before 706c93c5813caabbb0d0a576c017d15aeec2c113Affected
  • 5c12391ee1ab59cb2f3be3f1f5e6d0fc0c2dc854Affected
  • 6.6.49 to before 6.6.151Affected
  • 6.10.8 to before 6.11Affected
LinuxLinux
  • 6.11Affected
  • before 6.11Not affected
  • 6.6.151 through 6.6.*Not affected
  • 6.12.103 through 6.12.*Not affected
  • 6.18.44 through 6.18.*Not affected
  • 7.1.8 through 7.1.*Not affected
  • 7.2 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.