aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/fbcon.h
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2022-06-25 13:00:34 +0200
committerHelge Deller <deller@gmx.de>2022-07-07 10:50:46 +0200
commite64242caef18b4a5840b0e7a9bff37abd4f4f933 (patch)
treebe18c49db4dbefbfa6afe060abe7fd645c6b9e3a /include/linux/fbcon.h
parentfbcon: Disallow setting font bigger than screen size (diff)
downloadlinux-dev-e64242caef18b4a5840b0e7a9bff37abd4f4f933.tar.xz
linux-dev-e64242caef18b4a5840b0e7a9bff37abd4f4f933.zip
fbcon: Prevent that screen size is smaller than font size
We need to prevent that users configure a screen size which is smaller than the currently selected font size. Otherwise rendering chars on the screen will access memory outside the graphics memory region. This patch adds a new function fbcon_modechange_possible() which implements this check and which later may be extended with other checks if necessary. The new function is called from the FBIOPUT_VSCREENINFO ioctl handler in fbmem.c, which will return -EINVAL if userspace asked for a too small screen size. Signed-off-by: Helge Deller <deller@gmx.de> Reviewed-by: Geert Uytterhoeven <geert@linux-m68k.org> Cc: stable@vger.kernel.org # v5.4+
Diffstat (limited to '')
-rw-r--r--include/linux/fbcon.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/include/linux/fbcon.h b/include/linux/fbcon.h
index ff5596dd30f8..2382dec6d6ab 100644
--- a/include/linux/fbcon.h
+++ b/include/linux/fbcon.h
@@ -15,6 +15,8 @@ void fbcon_new_modelist(struct fb_info *info);
void fbcon_get_requirement(struct fb_info *info,
struct fb_blit_caps *caps);
void fbcon_fb_blanked(struct fb_info *info, int blank);
+int fbcon_modechange_possible(struct fb_info *info,
+ struct fb_var_screeninfo *var);
void fbcon_update_vcs(struct fb_info *info, bool all);
void fbcon_remap_all(struct fb_info *info);
int fbcon_set_con2fb_map_ioctl(void __user *argp);
@@ -33,6 +35,8 @@ static inline void fbcon_new_modelist(struct fb_info *info) {}
static inline void fbcon_get_requirement(struct fb_info *info,
struct fb_blit_caps *caps) {}
static inline void fbcon_fb_blanked(struct fb_info *info, int blank) {}
+static inline int fbcon_modechange_possible(struct fb_info *info,
+ struct fb_var_screeninfo *var) { return 0; }
static inline void fbcon_update_vcs(struct fb_info *info, bool all) {}
static inline void fbcon_remap_all(struct fb_info *info) {}
static inline int fbcon_set_con2fb_map_ioctl(void __user *argp) { return 0; }