[[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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS