2012-11-20 16:35:20

by Jean-Francois Moine

[permalink] [raw]
Subject: [PATCH] tty vt: Fix a regression in command line edition

From: Jean-François Moine <[email protected]>

The commit 81732c3b2fede049a692e58a7ceabb6d18ffb18c
("Fix line garbage in virtual console on command line edition")
made a regression with some machines: some characters were not erased
after line edition.

This patch adjusts the number of moved characters and the size of the
region to be updated.

It may be applied on both kernels 3.6 and 3.7.

Signed-off-by: Jean-François Moine <[email protected]>
Tested-by: Krzysztof Mazur <[email protected]>

--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -539,25 +539,25 @@
{
unsigned short *p = (unsigned short *) vc->vc_pos;

- scr_memmovew(p + nr, p, vc->vc_cols - vc->vc_x);
+ scr_memmovew(p + nr, p, (vc->vc_cols - vc->vc_x) * 2);
scr_memsetw(p, vc->vc_video_erase_char, nr * 2);
vc->vc_need_wrap = 0;
if (DO_UPDATE(vc))
do_update_region(vc, (unsigned long) p,
- (vc->vc_cols - vc->vc_x) / 2 + 1);
+ vc->vc_cols - vc->vc_x);
}

static void delete_char(struct vc_data *vc, unsigned int nr)
{
unsigned short *p = (unsigned short *) vc->vc_pos;

- scr_memcpyw(p, p + nr, vc->vc_cols - vc->vc_x - nr);
+ scr_memcpyw(p, p + nr, (vc->vc_cols - vc->vc_x - nr) * 2);
scr_memsetw(p + vc->vc_cols - vc->vc_x - nr, vc->vc_video_erase_char,
nr * 2);
vc->vc_need_wrap = 0;
if (DO_UPDATE(vc))
do_update_region(vc, (unsigned long) p,
- (vc->vc_cols - vc->vc_x) / 2);
+ vc->vc_cols - vc->vc_x);
}

static int softcursor_original;

--
Ken ar c'hentañ | ** Breizh ha Linux atav! **
Jef | http://moinejf.free.fr/


2012-11-20 17:13:05

by Krzysztof Mazur

[permalink] [raw]
Subject: Re: [PATCH] tty vt: Fix a regression in command line edition

On Tue, Nov 20, 2012 at 05:35:41PM +0100, Jean-Francois Moine wrote:
> From: Jean-Fran?ois Moine <[email protected]>
>
> The commit 81732c3b2fede049a692e58a7ceabb6d18ffb18c
> ("Fix line garbage in virtual console on command line edition")
> made a regression with some machines: some characters were not erased
> after line edition.
>
> This patch adjusts the number of moved characters and the size of the
> region to be updated.
>
> It may be applied on both kernels 3.6 and 3.7.
>

3.6? Commit 81732c exists only in 3.7. 3.6 is not affected.

Krzysiek