| From af77c56aa35325daa2bc2bed5c2ebf169be61b86 Mon Sep 17 00:00:00 2001 |
| From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| Date: Tue, 19 Jul 2022 14:49:39 +0900 |
| Subject: tty: vt: initialize unicode screen buffer |
| |
| From: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| |
| commit af77c56aa35325daa2bc2bed5c2ebf169be61b86 upstream. |
| |
| syzbot reports kernel infoleak at vcs_read() [1], for buffer can be read |
| immediately after resize operation. Initialize buffer using kzalloc(). |
| |
| ---------- |
| #include <fcntl.h> |
| #include <unistd.h> |
| #include <sys/ioctl.h> |
| #include <linux/fb.h> |
| |
| int main(int argc, char *argv[]) |
| { |
| struct fb_var_screeninfo var = { }; |
| const int fb_fd = open("/dev/fb0", 3); |
| ioctl(fb_fd, FBIOGET_VSCREENINFO, &var); |
| var.yres = 0x21; |
| ioctl(fb_fd, FBIOPUT_VSCREENINFO, &var); |
| return read(open("/dev/vcsu", O_RDONLY), &var, sizeof(var)) == -1; |
| } |
| ---------- |
| |
| Link: https://syzkaller.appspot.com/bug?extid=31a641689d43387f05d3 [1] |
| Cc: stable <stable@vger.kernel.org> |
| Reported-by: syzbot <syzbot+31a641689d43387f05d3@syzkaller.appspotmail.com> |
| Reviewed-by: Jiri Slaby <jirislaby@kernel.org> |
| Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp> |
| Link: https://lore.kernel.org/r/4ef053cf-e796-fb5e-58b7-3ae58242a4ad@I-love.SAKURA.ne.jp |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/tty/vt/vt.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- a/drivers/tty/vt/vt.c |
| +++ b/drivers/tty/vt/vt.c |
| @@ -344,7 +344,7 @@ static struct uni_screen *vc_uniscr_allo |
| /* allocate everything in one go */ |
| memsize = cols * rows * sizeof(char32_t); |
| memsize += rows * sizeof(char32_t *); |
| - p = vmalloc(memsize); |
| + p = vzalloc(memsize); |
| if (!p) |
| return NULL; |
| |