1 |
Author: mpagano |
2 |
Date: 2010-08-20 16:05:23 +0000 (Fri, 20 Aug 2010) |
3 |
New Revision: 1758 |
4 |
|
5 |
Added: |
6 |
genpatches-2.6/trunk/2.6.35/1800_page-table-unmap-for-stack-guard-fix.patch |
7 |
Modified: |
8 |
genpatches-2.6/trunk/2.6.35/0000_README |
9 |
Log: |
10 |
Patch to fix page table unmap for stack guard page |
11 |
|
12 |
Modified: genpatches-2.6/trunk/2.6.35/0000_README |
13 |
=================================================================== |
14 |
--- genpatches-2.6/trunk/2.6.35/0000_README 2010-08-20 14:58:53 UTC (rev 1757) |
15 |
+++ genpatches-2.6/trunk/2.6.35/0000_README 2010-08-20 16:05:23 UTC (rev 1758) |
16 |
@@ -47,6 +47,10 @@ |
17 |
From: http://www.kernel.org |
18 |
Desc: Linux 2.6.35.2 |
19 |
|
20 |
+Patch: 1800_page-table-unmap-for-stack-guard-fix.patch |
21 |
+From: https://bugzilla.kernel.org/show_bug.cgi?id=16588 |
22 |
+Desc: Fix page table unmap for stack guard page properly |
23 |
+ |
24 |
Patch: 2600_support-eject-dell-studio-1555.patch |
25 |
From: http://bugs.gentoo.org/show_bug.cgi?id=333379 |
26 |
Desc: Add support for eject key on Dell Studio 1555 |
27 |
|
28 |
Added: genpatches-2.6/trunk/2.6.35/1800_page-table-unmap-for-stack-guard-fix.patch |
29 |
=================================================================== |
30 |
--- genpatches-2.6/trunk/2.6.35/1800_page-table-unmap-for-stack-guard-fix.patch (rev 0) |
31 |
+++ genpatches-2.6/trunk/2.6.35/1800_page-table-unmap-for-stack-guard-fix.patch 2010-08-20 16:05:23 UTC (rev 1758) |
32 |
@@ -0,0 +1,33 @@ |
33 |
+--- a/mm/memory.c 2010-08-20 11:41:48.000000000 -0400 |
34 |
++++ b/mm/memory.c 2010-08-20 11:44:30.000000000 -0400 |
35 |
+@@ -2792,24 +2792,22 @@ static int do_anonymous_page(struct mm_s |
36 |
+ spinlock_t *ptl; |
37 |
+ pte_t entry; |
38 |
+ |
39 |
+- if (check_stack_guard_page(vma, address) < 0) { |
40 |
+- pte_unmap(page_table); |
41 |
+- return VM_FAULT_SIGBUS; |
42 |
+- } |
43 |
++ pte_unmap(page_table); |
44 |
+ |
45 |
++ if (check_stack_guard_page(vma, address) < 0) |
46 |
++ return VM_FAULT_SIGBUS; |
47 |
++ |
48 |
++ /* Use the zero-page for reads */ |
49 |
+ if (!(flags & FAULT_FLAG_WRITE)) { |
50 |
+ entry = pte_mkspecial(pfn_pte(my_zero_pfn(address), |
51 |
+ vma->vm_page_prot)); |
52 |
+- ptl = pte_lockptr(mm, pmd); |
53 |
+- spin_lock(ptl); |
54 |
++ page_table = pte_offset_map_lock(mm, pmd, address, &ptl); |
55 |
+ if (!pte_none(*page_table)) |
56 |
+ goto unlock; |
57 |
+ goto setpte; |
58 |
+ } |
59 |
+ |
60 |
+ /* Allocate our own private page. */ |
61 |
+- pte_unmap(page_table); |
62 |
+- |
63 |
+ if (unlikely(anon_vma_prepare(vma))) |
64 |
+ goto oom; |
65 |
+ page = alloc_zeroed_user_highpage_movable(vma, address); |