| From 009e39ae44f4191188aeb6dfbf661b771dbbe515 Mon Sep 17 00:00:00 2001 |
| From: Scot Doyle <lkml14@scotdoyle.com> |
| Date: Thu, 13 Oct 2016 12:12:43 -0500 |
| Subject: vt: clear selection before resizing |
| |
| From: Scot Doyle <lkml14@scotdoyle.com> |
| |
| commit 009e39ae44f4191188aeb6dfbf661b771dbbe515 upstream. |
| |
| When resizing a vt its selection may exceed the new size, resulting in |
| an invalid memory access [1]. Clear the selection before resizing. |
| |
| [1] http://lkml.kernel.org/r/CACT4Y+acDTwy4umEvf5ROBGiRJNrxHN4Cn5szCXE5Jw-d1B=Xw@mail.gmail.com |
| |
| Reported-and-tested-by: Dmitry Vyukov <dvyukov@google.com> |
| Signed-off-by: Scot Doyle <lkml14@scotdoyle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/tty/vt/vt.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| --- a/drivers/tty/vt/vt.c |
| +++ b/drivers/tty/vt/vt.c |
| @@ -874,6 +874,9 @@ static int vc_do_resize(struct tty_struc |
| if (!newscreen) |
| return -ENOMEM; |
| |
| + if (vc == sel_cons) |
| + clear_selection(); |
| + |
| old_rows = vc->vc_rows; |
| old_row_size = vc->vc_size_row; |
| |