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);
 if (CON_IS_VISIBLE(vc))
 update_screen(vc);

 vt.cに手をいれていただいたようだ
 ひさしぶりにパッチをやってみなけりゃ。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:42