[[diary/Nagura]] 791日 ・linux 4.4.31 linux 4.4.31リリースいただいたので早速~ ~ vd_unicon-kernel-20160116-4.4.patch~ ~ # cat drivers/tty/vt/vt.c.rej~ --- drivers/tty/vt/vt.c 2016-01-11 08:01:32.000000000 +0900~ +++ drivers/tty/vt/vt.c 2016-01-16 14:22:52.000000000 +0900~ @@ -957,12 +1043,19 @@ static int vc_do_resize(struct tty_struc~ if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)~ return 0;~ ~ +#ifdef CONFIG_UNICON~ + newscreen = kmalloc(new_screen_size*2, GFP_USER);~ +#else~ newscreen = kmalloc(new_screen_size, GFP_USER);~ +#endif~ if (!newscreen)~ return -ENOMEM;~ ~ old_rows = vc->vc_rows;~ old_row_size = vc->vc_size_row;~ +#ifdef CONFIG_UNICON~ + old_screen_size = vc->vc_screenbuf_size;~ +#endif~ ~ err = resize_screen(vc, new_cols, new_rows, user);~ if (err) {~ ~ http://lkml.iu.edu/hypermail/linux/kernel/1611.1/02476.html~ をもそもそもそ~ ここのようだ?~ ~ diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c~ index 136ebaaa9cc0..5ab54ef4f304 100644~ --- a/drivers/tty/vt/vt.c~ +++ b/drivers/tty/vt/vt.c~ @@ -872,10 +872,15 @@ static int vc_do_resize(struct tty_struct *tty, struct vc_data *vc,~ if (new_cols == vc->vc_cols && new_rows == vc->vc_rows)~ return 0;~ ~ + if (new_screen_size > (4 << 20))~ + return -EINVAL;~ newscreen = kmalloc(new_screen_size, GFP_USER);~ if (!newscreen)~ return -ENOMEM;~ ~ + if (vc == sel_cons)~ + clear_selection();~ +~ old_rows = vc->vc_rows;~ old_row_size = vc->vc_size_row;~ ~ @@ -1173,7 +1178,7 @@ static void csi_J(struct vc_data *vc, int vpar)~ break;~ case 3: /* erase scroll-back buffer (and whole display) */~ scr_memsetw(vc->vc_screenbuf, vc->vc_video_erase_char,~ - vc->vc_screenbuf_size >> 1);~ + vc->vc_screenbuf_size);~ set_origin(vc);~~ set_origin(vc);~ if (CON_IS_VISIBLE(vc))~ update_screen(vc);~ vt.cに手をいれていただいたようだ~ ひさしぶりにパッチをやってみなけりゃ。~ #comment