projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
4c9c6a1
)
mm: fix NULL ptr deref when walking hugepages
author
Sasha Levin
<
[email protected]
>
Tue, 29 May 2012 22:06:15 +0000
(15:06 -0700)
committer
Linus Torvalds
<
[email protected]
>
Tue, 29 May 2012 23:22:18 +0000
(16:22 -0700)
A missing validation of the value returned by find_vma() could cause a
NULL ptr dereference when walking the pagetable.
This is triggerable from usermode by a simple user by trying to read a
page info out of /proc/pid/pagemap which doesn't exist.
Introduced by commit
025c5b2451e4
("thp: optimize away unnecessary page
table locking").
Signed-off-by: Sasha Levin <
[email protected]
>
Reviewed-by: Naoya Horiguchi <
[email protected]
>
Cc: David Rientjes <
[email protected]
>
Cc: Andi Kleen <
[email protected]
>
Cc: Andrea Arcangeli <
[email protected]
>
Cc: KOSAKI Motohiro <
[email protected]
>
Cc: KAMEZAWA Hiroyuki <
[email protected]
>
Cc: <
[email protected]
> [3.4.x]
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
fs/proc/task_mmu.c
patch
|
blob
|
history
diff --git
a/fs/proc/task_mmu.c
b/fs/proc/task_mmu.c
index 1030a716d155b4a19a91972b2ead074733b4add9..7faaf2acc57032c060896234a2581048887b0b1d 100644
(file)
--- a/
fs/proc/task_mmu.c
+++ b/
fs/proc/task_mmu.c
@@
-784,7
+784,7
@@
static int pagemap_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end,
/* find the first VMA at or above 'addr' */
vma = find_vma(walk->mm, addr);
- if (pmd_trans_huge_lock(pmd, vma) == 1) {
+ if (
vma &&
pmd_trans_huge_lock(pmd, vma) == 1) {
for (; addr != end; addr += PAGE_SIZE) {
unsigned long offset;