Alexander Potapenko
21eff69aaa
vt: prevent leaking uninitialized data to userspace via /dev/vcs*
KMSAN reported an infoleak when reading from /dev/vcs*:
BUG: KMSAN: kernel-infoleak in vcs_read+0x18ba/0x1cc0
Call Trace:
...
kmsan_copy_to_user+0x7a/0x160 mm/kmsan/kmsan.c:1253
copy_to_user ./include/linux/uaccess.h:184
vcs_read+0x18ba/0x1cc0 drivers/tty/vt/vc_screen.c:352
__vfs_read+0x1b2/0x9d0 fs/read_write.c:416
vfs_read+0x36c/0x6b0 fs/read_write.c:452
...
Uninit was created at:
kmsan_save_stack_with_flags mm/kmsan/kmsan.c:279
kmsan_internal_poison_shadow+0xb8/0x1b0 mm/kmsan/kmsan.c:189
kmsan_kmalloc+0x94/0x100 mm/kmsan/kmsan.c:315
__kmalloc+0x13a/0x350 mm/slub.c:3818
kmalloc ./include/linux/slab.h:517
vc_allocate+0x438/0x800 drivers/tty/vt/vt.c:787
con_install+0x8c/0x640 drivers/tty/vt/vt.c:2880
tty_driver_install_tty drivers/tty/tty_io.c:1224
tty_init_dev+0x1b5/0x1020 drivers/tty/tty_io.c:1324
tty_open_by_driver drivers/tty/tty_io.c:1959
tty_open+0x17b4/0x2ed0 drivers/tty/tty_io.c:2007
chrdev_open+0xc25/0xd90 fs/char_dev.c:417
do_dentry_open+0xccc/0x1440 fs/open.c:794
vfs_open+0x1b6/0x2f0 fs/open.c:908
...
Bytes 0-79 of 240 are uninitialized
Consistently allocating |vc_screenbuf| with kzalloc() fixes the problem
Reported-by: syzbot+17a8efdf800000@syzkaller.appspotmail.com
Signed-off-by: Alexander Potapenko <glider@google.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2018-06-28 21:34:39 +09:00
..
2018-06-21 14:19:08 +02:00
2018-06-06 13:49:25 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-22 05:57:36 +09:00
2018-06-04 10:58:12 -07:00
2018-06-24 06:33:54 +08:00
2018-06-17 08:38:55 +09:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-06-24 06:31:54 +08:00
2018-06-15 18:10:01 -03:00
2018-06-24 19:16:42 +08:00
2018-06-06 18:39:49 -07:00
2018-06-19 10:40:29 +02:00
2018-06-07 10:23:33 -07:00
2018-06-24 06:31:54 +08:00
2018-06-08 17:21:52 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-22 10:58:27 +02:00
2018-06-12 16:19:22 -07:00
2018-05-25 18:23:56 +02:00
2018-06-12 16:19:22 -07:00
2018-06-22 11:03:43 +10:00
2018-06-20 16:42:39 +09:00
2018-06-12 16:19:22 -07:00
2018-06-16 16:40:36 -07:00
2018-06-11 12:09:19 -07:00
2018-06-12 16:19:22 -07:00
2018-06-14 16:21:46 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-21 07:22:30 +09:00
2018-06-15 18:10:01 -03:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-06-22 14:22:02 +02:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-24 06:33:54 +08:00
2018-06-07 10:23:33 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-17 05:25:18 +09:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-14 16:21:46 +09:00
2018-06-14 16:21:46 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-21 07:13:42 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-05 16:20:22 -07:00
2018-06-08 15:16:44 -07:00
2018-06-21 18:59:46 +02:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-19 15:53:32 +05:30
2018-06-12 16:19:22 -07:00
2018-06-04 10:58:12 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 18:28:00 -07:00
2018-06-12 16:19:22 -07:00
2018-05-29 16:38:16 +01:00
2018-06-06 18:39:49 -07:00
2018-06-18 07:55:57 +02:00
2018-06-15 18:10:01 -03:00
2018-06-07 12:34:37 -07:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-20 07:59:53 +09:00
2018-06-14 16:25:43 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:55:25 +09:00
2018-06-12 18:28:00 -07:00
2018-06-04 12:35:03 -07:00
2018-06-11 07:20:17 -07:00
2018-06-19 07:44:51 +09:00
2018-06-15 18:10:01 -03:00
2018-06-24 06:33:54 +08:00
2018-06-12 16:19:22 -07:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:55:25 +09:00
2018-06-15 18:11:26 -03:00
2018-06-12 16:19:22 -07:00
2018-06-15 18:10:01 -03:00
2018-06-12 16:19:22 -07:00
2018-06-12 18:28:00 -07:00
2018-06-28 21:34:39 +09:00
2018-06-12 16:19:22 -07:00
2018-06-15 07:31:07 +09:00
2018-06-12 16:19:22 -07:00
2018-06-12 13:11:26 -07:00
2018-06-16 06:35:02 +09:00
2018-06-17 05:25:18 +09:00
2018-06-12 16:19:22 -07:00
2018-06-16 06:35:02 +09:00
2018-06-05 16:20:22 -07:00
2018-06-12 12:56:02 -07:00
2018-06-23 20:44:11 +08:00
2018-06-06 17:27:14 -07:00