From 8b7ab03042da1e1881047845162d4e9008a127af Mon Sep 17 00:00:00 2001 From: =?utf8?q?S=2E=C3=87a=C4=9Flar=20Onur?= Date: Fri, 20 Aug 2010 19:35:38 -0400 Subject: [PATCH] bump to 2.6.27.52 --- 52.patch | 122 ------------------------------------------------ kernel-2.6.spec | 6 +-- sources | 4 +- 3 files changed, 3 insertions(+), 129 deletions(-) delete mode 100644 52.patch diff --git a/52.patch b/52.patch deleted file mode 100644 index ac5c13ecd..000000000 --- a/52.patch +++ /dev/null @@ -1,122 +0,0 @@ -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/fs/proc/task_mmu.c b/fs/proc/task_mmu.c -index d8be92a..0325100 100644 ---- a/fs/proc/task_mmu.c -+++ b/fs/proc/task_mmu.c -@@ -205,6 +205,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) - struct file *file = vma->vm_file; - int flags = vma->vm_flags; - unsigned long ino = 0; -+ unsigned long start; - dev_t dev = 0; - int len; - -@@ -214,8 +215,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma) - ino = inode->i_ino; - } - -+ /* We don't show the stack guard page in /proc/maps */ -+ start = vma->vm_start; -+ if (vma->vm_flags & VM_GROWSDOWN) -+ start += PAGE_SIZE; -+ - seq_printf(m, "%08lx-%08lx %c%c%c%c %08llx %02x:%02x %lu %n", -- vma->vm_start, -+ start, - vma->vm_end, - flags & VM_READ ? 'r' : '-', - flags & VM_WRITE ? 'w' : '-', -diff --git a/mm/memory.c b/mm/memory.c -index 1c1a375..2638c6f 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,9 +2437,13 @@ static int do_anonymous_page(struct mm_struct *mm, struct vm_area_struct *vma, - spinlock_t *ptl; - pte_t entry; - -- /* Allocate our own private page. */ -- pte_unmap(page_table); -+ pte_unmap(page_table); -+ -+ /* Check if we need to add a guard page to the stack */ -+ if (check_stack_guard_page(vma, address) < 0) -+ return VM_FAULT_SIGBUS; - -+ /* Allocate our own private page. */ - if (!vx_rss_avail(mm, 1)) - goto oom; - if (unlikely(anon_vma_prepare(vma))) -diff --git a/mm/mmap.c b/mm/mmap.c -index 7201372..bef13a1 100644 ---- a/mm/mmap.c -+++ b/mm/mmap.c -@@ -1573,7 +1573,7 @@ static int acct_stack_growth(struct vm_area_struct * vma, unsigned long size, un - * Overcommit.. This must be the final test, as it will - * update security statistics. - */ -- if (security_vm_enough_memory(grow)) -+ if (security_vm_enough_memory_mm(mm, grow)) - return -ENOMEM; - - /* Ok, everything looks good - let it rip */ diff --git a/kernel-2.6.spec b/kernel-2.6.spec index c6660cb1a..dd4b7fda4 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 51 +%define patchlevel 52 %define kversion 2.6.%{sublevel} %define rpmversion 2.6.%{sublevel}%{?patchlevel:.%{patchlevel}} @@ -160,8 +160,6 @@ Patch220: delta-ptrace-fix01.diff Patch230: delta-pivot-fix01.diff Patch240: delta-killperm-fix01.diff -Patch241: 52.patch - # IP sets Patch250: linux-2.6-250-ipsets.patch @@ -368,8 +366,6 @@ KERNEL_PREVIOUS=vanilla %ApplyPatch 230 %ApplyPatch 240 -%ApplyPatch 241 - %ApplyPatch 250 %ApplyPatch 500 diff --git a/sources b/sources index 68779f7b8..9494d3998 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ b3e78977aa79d3754cb7f8143d7ddabd http://build.planet-lab.org/third-party/linux-2.6.27.tar.bz2 -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 +f65733e45939826f416a127b24f8209b http://ftp.kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.52.bz2 +ea81cda32a2310c87c12972ed69b83b5 http://www.cs.princeton.edu/~caglar/patch-2.6.27.52-vs2.3.0.36.4.diff -- 2.47.0