mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2024-12-28 16:52:18 +00:00
e64242caef
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+
47 lines
2.1 KiB
C
47 lines
2.1 KiB
C
#ifndef _LINUX_FBCON_H
|
|
#define _LINUX_FBCON_H
|
|
|
|
#ifdef CONFIG_FRAMEBUFFER_CONSOLE
|
|
void __init fb_console_init(void);
|
|
void __exit fb_console_exit(void);
|
|
int fbcon_fb_registered(struct fb_info *info);
|
|
void fbcon_fb_unregistered(struct fb_info *info);
|
|
void fbcon_fb_unbind(struct fb_info *info);
|
|
void fbcon_suspended(struct fb_info *info);
|
|
void fbcon_resumed(struct fb_info *info);
|
|
int fbcon_mode_deleted(struct fb_info *info,
|
|
struct fb_videomode *mode);
|
|
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);
|
|
int fbcon_get_con2fb_map_ioctl(void __user *argp);
|
|
#else
|
|
static inline void fb_console_init(void) {}
|
|
static inline void fb_console_exit(void) {}
|
|
static inline int fbcon_fb_registered(struct fb_info *info) { return 0; }
|
|
static inline void fbcon_fb_unregistered(struct fb_info *info) {}
|
|
static inline void fbcon_fb_unbind(struct fb_info *info) {}
|
|
static inline void fbcon_suspended(struct fb_info *info) {}
|
|
static inline void fbcon_resumed(struct fb_info *info) {}
|
|
static inline int fbcon_mode_deleted(struct fb_info *info,
|
|
struct fb_videomode *mode) { return 0; }
|
|
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; }
|
|
static inline int fbcon_get_con2fb_map_ioctl(void __user *argp) { return 0; }
|
|
#endif
|
|
|
|
#endif /* _LINUX_FBCON_H */
|