x86/vm86: Block non-root vm86(old) if mmap_min_addr != 0
authorAndy Lutomirski <luto@kernel.org>
Sat, 5 Sep 2015 00:00:43 +0000 (17:00 -0700)
committerIngo Molnar <mingo@kernel.org>
Sat, 5 Sep 2015 07:01:16 +0000 (09:01 +0200)
commit76fc5e7b2355af167dea1a32e93c57fc37900a5b
tree0db0ca6a7f1a689a7efdcf1539bacf330cc1715c
parent95cd2ea7d54b41b0b2828587f108fe270d59eede
x86/vm86: Block non-root vm86(old) if mmap_min_addr != 0

vm86 exposes an interesting attack surface against the entry
code. Since vm86 is mostly useless anyway if mmap_min_addr != 0,
just turn it off in that case.

There are some reports that vbetool can work despite setting
mmap_min_addr to zero.  This shouldn't break that use case,
as CAP_SYS_RAWIO already overrides mmap_min_addr.

Suggested-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Arjan van de Ven <arjan@linux.intel.com>
Cc: Austin S Hemmelgarn <ahferroin7@gmail.com>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Josh Boyer <jwboyer@fedoraproject.org>
Cc: Kees Cook <keescook@chromium.org>
Cc: Matthew Garrett <mjg59@srcf.ucam.org>
Cc: Oleg Nesterov <oleg@redhat.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stas Sergeev <stsp@list.ru>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
arch/x86/kernel/vm86_32.c
tools/testing/selftests/x86/entry_from_vm86.c