On Fri, Aug 05, 2022 at 06:25:43AM +0000, chenjun (AM) wrote: > 在 2022/7/31 20:16, gregkh@xxxxxxxxxxxxxxxxxxx 写道: > > > > This is a note to let you know that I've just added the patch titled > > > > fbcon: Prevent that screen size is smaller than font size > > > > to the 4.19-stable tree which can be found at: > > http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary > > > > The filename of the patch is: > > fbcon-prevent-that-screen-size-is-smaller-than-font-size.patch > > and it can be found in the queue-4.19 subdirectory. > > > > If you, or anyone else, feels it should not be added to the stable tree, > > please let <stable@xxxxxxxxxxxxxxx> know about it. > > > > > > From foo@baz Sun Jul 31 01:15:34 PM CEST 2022 > > From: Chen Jun <chenjun102@xxxxxxxxxx> > > Date: Fri, 29 Jul 2022 03:11:39 +0000 > > Subject: fbcon: Prevent that screen size is smaller than font size > > To: <stable@xxxxxxxxxxxxxxx>, <deller@xxxxxx>, <geert@xxxxxxxxxxxxxx>, <b.zolnierkie@xxxxxxxxxxx>, <gregkh@xxxxxxxxxxxxxxxxxxx> > > Cc: <xuqiang36@xxxxxxxxxx>, <xiujianfeng@xxxxxxxxxx> > > Message-ID: <20220729031140.21806-2-chenjun102@xxxxxxxxxx> > > > > From: Helge Deller <deller@xxxxxx> > > > > commit e64242caef18b4a5840b0e7a9bff37abd4f4f933 upstream > > > > 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@xxxxxx> > > Reviewed-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> > > Link: https://lore.kernel.org/all/20220706150253.2186-1-deller@xxxxxx/ > > [sudip: adjust context] > > Signed-off-by: Chen Jun <chenjun102@xxxxxxxxxx> > > Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx> > > --- > > drivers/video/fbdev/core/fbcon.c | 28 ++++++++++++++++++++++++++++ > > drivers/video/fbdev/core/fbmem.c | 10 +++++++--- > > include/linux/fbcon.h | 4 ++++ > > 3 files changed, 39 insertions(+), 3 deletions(-) > > > > --- a/drivers/video/fbdev/core/fbcon.c > > +++ b/drivers/video/fbdev/core/fbcon.c > > @@ -2729,6 +2729,34 @@ static void fbcon_set_all_vcs(struct fb_ > > fbcon_modechanged(info); > > } > > > > +/* let fbcon check if it supports a new screen resolution */ > > +int fbcon_modechange_possible(struct fb_info *info, struct fb_var_screeninfo *var) > > +{ > > + struct fbcon_ops *ops = info->fbcon_par; > > + struct vc_data *vc; > > + unsigned int i; > > + > > + WARN_CONSOLE_UNLOCKED(); > > + > > + if (!ops) > > + return 0; > > + > > + /* prevent setting a screen size which is smaller than font size */ > > + for (i = first_fb_vc; i <= last_fb_vc; i++) { > > + vc = vc_cons[i].d; > > + if (!vc || vc->vc_mode != KD_TEXT || > > + registered_fb[con2fb_map[i]] != info) > > + continue; > > + > > + if (vc->vc_font.width > FBCON_SWAP(var->rotate, var->xres, var->yres) || > > + vc->vc_font.height > FBCON_SWAP(var->rotate, var->yres, var->xres)) > > + return -EINVAL; > > + } > > + > > + return 0; > > +} > > +EXPORT_SYMBOL_GPL(fbcon_modechange_possible); > > + > > static int fbcon_mode_deleted(struct fb_info *info, > > struct fb_videomode *mode) > > { > > --- a/drivers/video/fbdev/core/fbmem.c > > +++ b/drivers/video/fbdev/core/fbmem.c > > @@ -1121,9 +1121,13 @@ static long do_fb_ioctl(struct fb_info * > > console_unlock(); > > return -ENODEV; > > } > > - info->flags |= FBINFO_MISC_USEREVENT; > > - ret = fb_set_var(info, &var); > > - info->flags &= ~FBINFO_MISC_USEREVENT; > > + ret = fbcon_modechange_possible(info, &var); > > + if (!ret) { > > + info->flags |= FBINFO_MISC_USEREVENT; > > + ret = fb_set_var(info, &var); > > + info->flags &= ~FBINFO_MISC_USEREVENT; > > + } > > + lock_fb_info(info); > > Hi Greg > > Cengiz Can points out that lock_fb_info(info) is wrong. > > Please drop this series. Ok, now dropping from the 4.19.y queue. But then someone needs to send a working backport for it so that I can take the older kernel versions as well. thanks, greg k-h