bump to 2.6.27.51 and test 52-rc1
authorS.Çağlar Onur <caglar@cs.princeton.edu>
Fri, 13 Aug 2010 22:34:27 +0000 (18:34 -0400)
committerS.Çağlar Onur <caglar@cs.princeton.edu>
Fri, 13 Aug 2010 22:34:27 +0000 (18:34 -0400)
52.patch [new file with mode: 0644]
kernel-2.6.spec
sources

diff --git a/52.patch b/52.patch
new file mode 100644 (file)
index 0000000..812c1f2
--- /dev/null
+++ b/52.patch
@@ -0,0 +1,78 @@
+diff --git a/arch/x86/mm/fault.c b/arch/x86/mm/fault.c
+index cd535c7..1b53da9 100644
+--- a/arch/x86/mm/fault.c
++++ b/arch/x86/mm/fault.c
+@@ -599,6 +599,7 @@ void __kprobes do_page_fault(struct pt_regs *regs, unsigned long error_code)
+       unsigned long address;
+       int write, si_code;
+       int fault;
++      int should_exit_no_context = 0;
+ #ifdef CONFIG_X86_64
+       unsigned long flags;
+ #endif
+@@ -886,6 +887,9 @@ no_context:
+       oops_end(flags, regs, SIGKILL);
+ #endif
++      if (should_exit_no_context)
++              return;
++
+ /*
+  * We ran out of memory, or some other thing happened to us that made
+  * us unable to handle the page fault gracefully.
+@@ -911,8 +915,11 @@ do_sigbus:
+       up_read(&mm->mmap_sem);
+       /* Kernel mode? Handle exceptions or die */
+-      if (!(error_code & PF_USER))
++      if (!(error_code & PF_USER)) {
++              should_exit_no_context = 1;
+               goto no_context;
++      }
++
+ #ifdef CONFIG_X86_32
+       /* User space => ok to do another page fault */
+       if (is_prefetch(regs, address, error_code))
+diff --git a/mm/memory.c b/mm/memory.c
+index 1c1a375..9739ae4 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -2405,6 +2405,26 @@ out_nomap:
+ }
+ /*
++ * This is like a special single-page "expand_downwards()",
++ * except we must first make sure that 'address-PAGE_SIZE'
++ * doesn't hit another vma.
++ *
++ * The "find_vma()" will do the right thing even if we wrap
++ */
++static inline int check_stack_guard_page(struct vm_area_struct *vma, unsigned long address)
++{
++      address &= PAGE_MASK;
++      if ((vma->vm_flags & VM_GROWSDOWN) && address == vma->vm_start) {
++              address -= PAGE_SIZE;
++              if (find_vma(vma->vm_mm, address) != vma)
++                      return -ENOMEM;
++
++              expand_stack(vma, address);
++      }
++      return 0;
++}
++
++/*
+  * We enter with non-exclusive mmap_sem (to exclude vma changes,
+  * but allow concurrent faults), and pte mapped but not yet locked.
+  * We return with mmap_sem still held, but pte unmapped and unlocked.
+@@ -2417,6 +2437,11 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma,
+       spinlock_t *ptl;
+       pte_t entry;
++      if (check_stack_guard_page(vma, address) < 0) {
++              pte_unmap(page_table);
++              return VM_FAULT_SIGBUS;
++      }
++
+       /* Allocate our own private page. */
+       pte_unmap(page_table);
index fa1a7ec..f3a2810 100644 (file)
@@ -37,7 +37,7 @@ Summary: The Linux kernel (the core of the Linux operating system)
 # adding some text to the end of the version number.
 #
 %define sublevel 27
-%define patchlevel 50
+%define patchlevel 51
 %define kversion 2.6.%{sublevel}
 %define rpmversion 2.6.%{sublevel}%{?patchlevel:.%{patchlevel}}
 
@@ -149,6 +149,8 @@ Source30: %{kernelconfig}-%{kversion}-i686-xenU.config
 Patch000: ftp://ftp.kernel.org/pub/linux/kernel/v2.6/patch-%{rpmversion}.bz2
 %endif
 
+Patch001: 52.patch
+
 Patch010: linux-2.6-010-e1000e-ich10lan.patch
 Patch017: linux-2.6-017-bnx2.patch
 
@@ -355,6 +357,8 @@ KERNEL_PREVIOUS=vanilla
 %ApplyPatch 0
 %endif
 
+%ApplyPatch 1
+
 %ApplyPatch 10
 %ApplyPatch 17
 
diff --git a/sources b/sources
index 15f2d34..68779f7 100644 (file)
--- a/sources
+++ b/sources
@@ -1,3 +1,3 @@
 b3e78977aa79d3754cb7f8143d7ddabd  http://build.planet-lab.org/third-party/linux-2.6.27.tar.bz2
-5fa0ef973a905708ec12ac7a2da90aab  http://ftp.kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.50.bz2
-f5fdebad83fcfaf555725ee8dcdf95e6  http://www.cs.princeton.edu/~caglar/patch-2.6.27.50-vs2.3.0.36.4.diff
+ae7139cd31cca8eb0b9d1348eccc0478  http://ftp.kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.51.bz2
+f5fdebad83fcfaf555725ee8dcdf95e6  http://www.cs.princeton.edu/~caglar/patch-2.6.27.51-vs2.3.0.36.4.diff