summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichel Dänzer <michel.daenzer@amd.com>2018-07-11 19:01:31 +0200
committerMichel Dänzer <michel@daenzer.net>2018-07-12 18:09:24 +0200
commit447ef0458fac047919d021f2ba1753a647f5c503 (patch)
tree3b8335974641eda5adcc81b6355db6f485540b05
parent6a0c01bbd4ed48c696c38952ee33ce21afec9f91 (diff)
Check dimensions passed to drmmode_xf86crtc_resize
When enabling a secondary GPU output, Xorg can try resizing the screen beyond the limit advertised by the driver, leading to drmModeAddFB failing and primary GPU outputs turning off. Check for this and bail instead. (Ported from amdgpu commit 940c8b39f79789d4d5ddb8ab8d25a8ae05932756) Acked-by: Alex Deucher <alexander.deucher@amd.com>
-rw-r--r--src/drmmode_display.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/drmmode_display.c b/src/drmmode_display.c
index 25fcabfa..4b5f9f45 100644
--- a/src/drmmode_display.c
+++ b/src/drmmode_display.c
@@ -2260,6 +2260,14 @@ drmmode_xf86crtc_resize (ScrnInfoPtr scrn, int width, int height)
if (scrn->virtualX == width && scrn->virtualY == height)
return TRUE;
+ if (width > xf86_config->maxWidth || height > xf86_config->maxHeight) {
+ xf86DrvMsg(scrn->scrnIndex, X_WARNING,
+ "Xorg tried resizing screen to %dx%d, but maximum "
+ "supported is %dx%d\n", width, height,
+ xf86_config->maxWidth, xf86_config->maxHeight);
+ return FALSE;
+ }
+
if (info->allowColorTiling && !info->shadow_primary) {
if (info->ChipFamily < CHIP_FAMILY_R600 || info->allowColorTiling2D)
usage |= RADEON_CREATE_PIXMAP_TILING_MACRO;