All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3] vt: fix memory overlapping when deleting chars in the buffer
@ 2022-06-28  9:33 Yangxi Xiang
  2022-06-30 15:18 ` Greg Kroah-Hartman
  0 siblings, 1 reply; 2+ messages in thread
From: Yangxi Xiang @ 2022-06-28  9:33 UTC (permalink / raw)
  To: linux-kernel
  Cc: Greg Kroah-Hartman, Jiri Slaby, Johan Hovold,
	Igor Matheus Andrade Torrente, Christian Borntraeger, nick black,
	Yangxi Xiang

A memory overlapping copy occurs when deleting a long line. This memory
overlapping copy can cause data corruption when scr_memcpyw is optimized
to memcpy because memcpy does not ensure its behavior if the destination
buffer overlaps with the source buffer. The line buffer is not always
broken, because the memcpy utilizes the hardware acceleration, whose
result is not deterministic.

Fix this problem by using replacing the scr_memcpyw with scr_memmovew.

Fixes: 81732c3b2fed ("Fix line garbage in virtual console")
Signed-off-by: Yangxi Xiang <xyangxi5@gmail.com>
---
Changes since v2:

- add more information about this bug and which commit id this fixes
- use scr_memmovew() in both overlapping and not overlapping case.
---
 drivers/tty/vt/vt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tty/vt/vt.c b/drivers/tty/vt/vt.c
index f8c87c4d7399..dfc1f4b445f3 100644
--- a/drivers/tty/vt/vt.c
+++ b/drivers/tty/vt/vt.c
@@ -855,7 +855,7 @@ static void delete_char(struct vc_data *vc, unsigned int nr)
 	unsigned short *p = (unsigned short *) vc->vc_pos;
 
 	vc_uniscr_delete(vc, nr);
-	scr_memcpyw(p, p + nr, (vc->vc_cols - vc->state.x - nr) * 2);
+	scr_memmovew(p, p + nr, (vc->vc_cols - vc->state.x - nr) * 2);
 	scr_memsetw(p + vc->vc_cols - vc->state.x - nr, vc->vc_video_erase_char,
 			nr * 2);
 	vc->vc_need_wrap = 0;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH v3] vt: fix memory overlapping when deleting chars in the buffer
  2022-06-28  9:33 [PATCH v3] vt: fix memory overlapping when deleting chars in the buffer Yangxi Xiang
@ 2022-06-30 15:18 ` Greg Kroah-Hartman
  0 siblings, 0 replies; 2+ messages in thread
From: Greg Kroah-Hartman @ 2022-06-30 15:18 UTC (permalink / raw)
  To: Yangxi Xiang
  Cc: linux-kernel, Jiri Slaby, Johan Hovold,
	Igor Matheus Andrade Torrente, Christian Borntraeger, nick black

On Tue, Jun 28, 2022 at 05:33:22PM +0800, Yangxi Xiang wrote:
> A memory overlapping copy occurs when deleting a long line. This memory
> overlapping copy can cause data corruption when scr_memcpyw is optimized
> to memcpy because memcpy does not ensure its behavior if the destination
> buffer overlaps with the source buffer. The line buffer is not always
> broken, because the memcpy utilizes the hardware acceleration, whose
> result is not deterministic.
> 
> Fix this problem by using replacing the scr_memcpyw with scr_memmovew.
> 
> Fixes: 81732c3b2fed ("Fix line garbage in virtual console")

Nit, this should have been:
	Fixes: 81732c3b2fed ("tty vt: Fix line garbage in virtual console on command line edition")

otherwise our tools complain.  I've fixed it up when applying it.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-30 15:18 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-28  9:33 [PATCH v3] vt: fix memory overlapping when deleting chars in the buffer Yangxi Xiang
2022-06-30 15:18 ` Greg Kroah-Hartman

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.