OSDN Git Service
(root)
/
tomoyo
/
tomoyo-test1.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4b660a7
)
x86, vdso: Fix an OOPS accessing the HPET mapping w/o an HPET
author
Andy Lutomirski
<luto@amacapital.net>
Wed, 14 May 2014 23:23:13 +0000
(16:23 -0700)
committer
H. Peter Anvin
<hpa@linux.intel.com>
Wed, 21 May 2014 23:14:04 +0000
(16:14 -0700)
The oops can be triggered in qemu using -no-hpet (but not nohpet) by
running a 32-bit program and reading a couple of pages before the vdso.
This should send SIGBUS instead of OOPSing.
The bug was introduced by:
commit
7a59ed415f5b57469e22e41fc4188d5399e0b194
Author: Stefani Seibold <stefani@seibold.net>
Date: Mon Mar 17 23:22:09 2014 +0100
x86, vdso: Add 32 bit VDSO time support for 32 bit kernel
which is new in 3.15.
Signed-off-by: Andy Lutomirski <luto@amacapital.net>
Link:
http://lkml.kernel.org/r/e99025d887d6670b6c4d81e6ccfeeb83770b21e9.1400109621.git.luto@amacapital.net
Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
arch/x86/vdso/vdso32-setup.c
patch
|
blob
|
history
diff --git
a/arch/x86/vdso/vdso32-setup.c
b/arch/x86/vdso/vdso32-setup.c
index
e1f220e
..
310c5f0
100644
(file)
--- a/
arch/x86/vdso/vdso32-setup.c
+++ b/
arch/x86/vdso/vdso32-setup.c
@@
-155,6
+155,7
@@
int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
unsigned long addr;
int ret = 0;
struct vm_area_struct *vma;
+ static struct page *no_pages[] = {NULL};
#ifdef CONFIG_X86_X32_ABI
if (test_thread_flag(TIF_X32))
@@
-193,7
+194,7
@@
int arch_setup_additional_pages(struct linux_binprm *bprm, int uses_interp)
addr - VDSO_OFFSET(VDSO_PREV_PAGES),
VDSO_OFFSET(VDSO_PREV_PAGES),
VM_READ,
-
NULL
);
+
no_pages
);
if (IS_ERR(vma)) {
ret = PTR_ERR(vma);