Tetsuo Handa
ffb324e6f8
tty: vt: always invoke vc->vc_sw->con_resize callback
syzbot is reporting OOB write at vga16fb_imageblit() [1], for
resize_screen() from ioctl(VT_RESIZE) returns 0 without checking whether
requested rows/columns fit the amount of memory reserved for the graphical
screen if current mode is KD_GRAPHICS.
----------
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/kd.h>
#include <linux/vt.h>
int main(int argc, char *argv[])
{
const int fd = open("/dev/char/4:1", O_RDWR);
struct vt_sizes vt = { 0x4100, 2 };
ioctl(fd, KDSETMODE, KD_GRAPHICS);
ioctl(fd, VT_RESIZE, &vt);
ioctl(fd, KDSETMODE, KD_TEXT);
return 0;
}
----------
Allow framebuffer drivers to return -EINVAL, by moving vc->vc_mode !=
KD_GRAPHICS check from resize_screen() to fbcon_resize().
Link: https://syzkaller.appspot.com/bug?extid=1f29e126cf461c4de3b3 [1]
Reported-by: syzbot <syzbot+1f29e126cf461c4de3b3@syzkaller.appspotmail.com>
Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Tetsuo Handa <penguin-kernel@I-love.SAKURA.ne.jp>
Tested-by: syzbot <syzbot+1f29e126cf461c4de3b3@syzkaller.appspotmail.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2021-05-15 08:12:12 -07:00
..
2021-03-11 11:11:32 +01:00
2021-05-15 08:12:12 -07:00
2020-11-22 22:58:55 +01:00
2020-05-06 19:29:10 +02:00
2020-01-30 08:04:01 -08:00
2020-09-08 13:33:31 +02:00
2021-05-07 00:26:34 -07:00
2020-04-08 12:09:15 +02:00
2020-12-08 18:34:25 +01:00
2020-11-30 20:21:54 +01:00
2021-02-18 15:14:32 +01:00
2021-03-22 15:02:14 +01:00
2020-11-30 20:04:36 +01:00
2020-09-08 13:33:15 +02:00
2020-12-08 18:36:52 +01:00
2020-01-06 09:45:59 +01:00
2020-11-30 20:04:24 +01:00
2020-01-03 14:27:43 +01:00
2021-02-24 13:38:31 -08:00
2019-06-19 17:09:55 +02:00
2021-03-16 17:08:46 +10:00
2021-02-12 10:01:45 +00:00
2020-08-23 17:36:59 -05:00
2020-09-08 13:33:20 +02:00
2019-12-05 10:57:53 +02:00
2019-04-01 17:46:55 +02:00
2019-04-01 17:46:55 +02:00
2019-04-01 17:46:55 +02:00
2019-04-01 17:46:55 +02:00
2020-10-28 19:40:11 +01:00
2020-11-17 08:47:15 +01:00
2019-12-05 10:57:53 +02:00
2019-06-03 16:00:08 +02:00
2019-12-05 10:57:53 +02:00
2019-12-05 10:57:53 +02:00
2020-12-08 18:34:08 +01:00
2020-03-09 11:12:19 +01:00
2020-01-30 08:04:01 -08:00
2020-12-08 18:34:08 +01:00
2020-12-08 18:34:08 +01:00
2020-01-15 17:31:50 +01:00
2019-12-05 10:57:53 +02:00
2020-12-05 21:16:02 +01:00
2019-12-05 10:57:53 +02:00
2019-12-05 10:57:53 +02:00
2020-12-08 18:36:36 +01:00
2019-05-30 11:26:32 -07:00
2020-09-08 13:33:16 +02:00
2019-06-19 17:09:55 +02:00
2021-02-12 10:01:45 +00:00
2019-12-05 10:57:53 +02:00
2021-04-26 17:33:03 -04:00
2020-07-20 11:47:29 +02:00
2020-12-08 18:34:08 +01:00
2019-12-05 10:57:53 +02:00
2020-10-17 08:23:14 +02:00
2020-02-19 10:58:22 -08:00
2020-12-08 18:35:24 +01:00
2020-12-08 18:34:50 +01:00
2020-07-20 11:47:29 +02:00
2020-08-23 17:36:59 -05:00
2019-12-05 10:57:53 +02:00
2020-12-08 18:31:11 +01:00
2020-06-09 09:39:13 -07:00
2020-06-17 10:57:41 -07:00
2021-04-26 10:44:16 -07:00
2020-09-08 13:33:17 +02:00
2019-12-05 10:57:53 +02:00
2021-02-12 10:01:45 +00:00
2020-11-27 16:14:02 +01:00
2020-12-08 18:34:08 +01:00
2020-07-20 11:47:29 +02:00
2020-10-15 10:46:16 -07:00
2019-12-05 10:57:53 +02:00
2020-07-20 11:47:29 +02:00
2020-11-30 20:04:56 +01:00
2020-11-30 20:21:08 +01:00
2020-01-03 14:27:49 +01:00
2020-08-23 17:36:59 -05:00
2020-12-08 18:34:08 +01:00
2019-12-05 10:57:53 +02:00
2020-11-30 20:04:43 +01:00
2020-07-16 12:35:15 -07:00
2020-01-30 08:04:01 -08:00
2020-01-30 08:04:01 -08:00
2020-01-30 08:04:01 -08:00
2020-12-04 01:01:22 +11:00
2020-08-05 19:47:22 +02:00
2020-03-18 12:27:03 +01:00
2020-08-23 17:36:59 -05:00
2020-08-23 17:36:59 -05:00
2019-08-26 10:02:02 +02:00
2020-06-09 09:39:13 -07:00
2020-11-29 22:51:07 +01:00
2020-08-20 17:48:12 +02:00
2020-08-20 17:48:12 +02:00
2020-12-05 21:01:04 +01:00
2020-09-08 13:33:19 +02:00
2020-08-23 17:36:59 -05:00
2020-04-17 15:50:11 +02:00
2020-09-25 16:34:50 +02:00
2020-01-30 08:04:01 -08:00
2020-11-01 10:29:04 +01:00
2019-06-12 20:28:11 +02:00
2021-01-20 12:06:32 +01:00
2019-12-05 10:57:53 +02:00
2020-08-23 17:36:59 -05:00
2019-04-01 17:46:59 +02:00
2020-09-08 13:33:02 +02:00
2019-12-05 10:57:53 +02:00
2020-09-08 13:33:03 +02:00
2020-11-30 20:04:59 +01:00
2020-10-15 08:12:59 +02:00
2020-08-23 17:36:59 -05:00
2019-12-05 10:57:53 +02:00
2019-12-05 10:57:53 +02:00
2019-12-05 10:57:53 +02:00
2020-12-08 18:34:08 +01:00
2020-11-30 20:04:30 +01:00
2020-11-30 20:04:50 +01:00
2019-12-05 10:57:53 +02:00
2020-01-30 08:04:01 -08:00
2020-12-15 13:44:14 +01:00
2020-12-08 18:33:48 +01:00
2020-05-06 21:04:45 +02:00
2019-05-30 11:26:32 -07:00
2020-04-17 15:50:14 +02:00
2019-12-05 10:57:53 +02:00
2021-05-07 00:26:34 -07:00
2020-04-17 15:50:08 +02:00
2019-06-05 17:36:37 +02:00
2020-09-08 13:33:18 +02:00
2020-05-06 20:22:25 +02:00
2019-06-19 17:09:55 +02:00
2019-06-05 17:36:37 +02:00
2020-03-02 16:32:04 +01:00
2020-12-08 18:34:36 +01:00
2020-08-23 17:36:59 -05:00
2021-02-12 10:01:45 +00:00