From ccdc3c6b4936f5ab4597c122726362f61c18b96c Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=2E=C3=87a=C4=9Flar=20Onur?= Date: Fri, 13 Aug 2010 18:34:27 -0400 Subject: [PATCH] bump to 2.6.27.51 and test 52-rc1 --- 52.patch | 78 +++++++++++++++++++++++++++++++++++++++++++++++++ kernel-2.6.spec | 6 +++- sources | 4 +-- 3 files changed, 85 insertions(+), 3 deletions(-) create mode 100644 52.patch diff --git a/52.patch b/52.patch new file mode 100644 index 000000000..812c1f2e5 --- /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); + diff --git a/kernel-2.6.spec b/kernel-2.6.spec index fa1a7ec64..f3a281008 100644 --- a/kernel-2.6.spec +++ b/kernel-2.6.spec @@ -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 15f2d3493..68779f7b8 100644 --- 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 -- 2.47.0