[PATCH] x86/boot: Prevent faulty bootparams.screeninfo from causing harm

From: Jan H. SchÃnherr
Date: Sun Aug 27 2017 - 14:24:17 EST


If a zero for the number of lines manages to slip through, scroll()
may underflow some offset calculations, causing accesses outside the
video memory.

Make the check in __putstr() more pessimistic to prevent that.

Signed-off-by: Jan H. SchÃnherr <jschoenh@xxxxxxxxx>
---
arch/x86/boot/compressed/misc.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/arch/x86/boot/compressed/misc.c b/arch/x86/boot/compressed/misc.c
index a0838ab..c14217c 100644
--- a/arch/x86/boot/compressed/misc.c
+++ b/arch/x86/boot/compressed/misc.c
@@ -116,8 +116,7 @@ void __putstr(const char *s)
}
}

- if (boot_params->screen_info.orig_video_mode == 0 &&
- lines == 0 && cols == 0)
+ if (lines == 0 || cols == 0)
return;

x = boot_params->screen_info.orig_x;
--
2.3.1.dirty