Skip to content

Commit b2740b4

Browse files
CIQ Kernel Automationroxanan1996
authored andcommitted
vt: fix memory overlapping when deleting chars in the buffer
jira VULN-241 cve CVE-2022-48627 commit-author Yangxi Xiang <xyangxi5@gmail.com> commit 39cdb68 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: 81732c3 ("tty vt: Fix line garbage in virtual console on command line edition") Cc: stable <stable@kernel.org> Signed-off-by: Yangxi Xiang <xyangxi5@gmail.com> Link: https://lore.kernel.org/r/20220628093322.5688-1-xyangxi5@gmail.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> (cherry picked from commit 39cdb68) Signed-off-by: CIQ Kernel Automation <ciq_kernel_automation@ciq.com>
1 parent 872d60b commit b2740b4

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

drivers/tty/vt/vt.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -855,7 +855,7 @@ static void delete_char(struct vc_data *vc, unsigned int nr)
855855
unsigned short *p = (unsigned short *) vc->vc_pos;
856856

857857
vc_uniscr_delete(vc, nr);
858-
scr_memcpyw(p, p + nr, (vc->vc_cols - vc->state.x - nr) * 2);
858+
scr_memmovew(p, p + nr, (vc->vc_cols - vc->state.x - nr) * 2);
859859
scr_memsetw(p + vc->vc_cols - vc->state.x - nr, vc->vc_video_erase_char,
860860
nr * 2);
861861
vc->vc_need_wrap = 0;

0 commit comments

Comments
 (0)