Takashi Iwai a7693d
From 6c11df58fd1ac0aefcb3b227f72769272b939e56 Mon Sep 17 00:00:00 2001
Takashi Iwai a7693d
From: Helge Deller <deller@gmx.de>
Takashi Iwai a7693d
Date: Wed, 29 Jun 2022 15:53:55 +0200
Takashi Iwai a7693d
Subject: [PATCH] fbmem: Check virtual screen sizes in fb_set_var()
Takashi Iwai a7693d
Git-commit: 6c11df58fd1ac0aefcb3b227f72769272b939e56
Takashi Iwai a7693d
Patch-mainline: v5.19-rc6
Takashi Iwai a7693d
References: CVE-2021-33655 bsc#1201635
Takashi Iwai a7693d
Takashi Iwai a7693d
Verify that the fbdev or drm driver correctly adjusted the virtual
Takashi Iwai a7693d
screen sizes. On failure report the failing driver and reject the screen
Takashi Iwai a7693d
size change.
Takashi Iwai a7693d
Takashi Iwai a7693d
Signed-off-by: Helge Deller <deller@gmx.de>
Takashi Iwai a7693d
Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org>
Takashi Iwai a7693d
Cc: stable@vger.kernel.org # v5.4+
Takashi Iwai a7693d
Acked-by: Takashi Iwai <tiwai@suse.de>
Takashi Iwai a7693d
Takashi Iwai a7693d
---
Takashi Iwai a7693d
 drivers/video/fbdev/core/fbmem.c | 10 ++++++++++
Takashi Iwai a7693d
 1 file changed, 10 insertions(+)
Takashi Iwai a7693d
Takashi Iwai a7693d
diff --git a/drivers/video/fbdev/core/fbmem.c b/drivers/video/fbdev/core/fbmem.c
Takashi Iwai a7693d
index 7dc6848a96bb..7ee6eb2fa715 100644
Takashi Iwai a7693d
--- a/drivers/video/fbdev/core/fbmem.c
Takashi Iwai a7693d
+++ b/drivers/video/fbdev/core/fbmem.c
Takashi Iwai a7693d
@@ -1017,6 +1017,16 @@ fb_set_var(struct fb_info *info, struct fb_var_screeninfo *var)
Takashi Iwai a7693d
 	if (ret)
Takashi Iwai a7693d
 		return ret;
Takashi Iwai a7693d
 
Takashi Iwai a7693d
+	/* verify that virtual resolution >= physical resolution */
Takashi Iwai a7693d
+	if (var->xres_virtual < var->xres ||
Takashi Iwai a7693d
+	    var->yres_virtual < var->yres) {
Takashi Iwai a7693d
+		pr_warn("WARNING: fbcon: Driver '%s' missed to adjust virtual screen size (%ux%u vs. %ux%u)\n",
Takashi Iwai a7693d
+			info->fix.id,
Takashi Iwai a7693d
+			var->xres_virtual, var->yres_virtual,
Takashi Iwai a7693d
+			var->xres, var->yres);
Takashi Iwai a7693d
+		return -EINVAL;
Takashi Iwai a7693d
+	}
Takashi Iwai a7693d
+
Takashi Iwai a7693d
 	if ((var->activate & FB_ACTIVATE_MASK) != FB_ACTIVATE_NOW)
Takashi Iwai a7693d
 		return 0;
Takashi Iwai a7693d
 
Takashi Iwai a7693d
-- 
Takashi Iwai a7693d
2.35.3
Takashi Iwai a7693d