[kernel] r16150 - in dists/trunk/linux-2.6/debian: . patches/bugfix/all patches/series

Maximilian Attems maks at alioth.debian.org
Mon Aug 16 21:51:01 UTC 2010


Author: maks
Date: Mon Aug 16 21:50:59 2010
New Revision: 16150

Log:
add missing mm lvm fixup patch

reprepare to release 2.6.35-1~experimental.2

Added:
   dists/trunk/linux-2.6/debian/patches/bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch
Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/series/1~experimental.2

Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	Mon Aug 16 20:34:28 2010	(r16149)
+++ dists/trunk/linux-2.6/debian/changelog	Mon Aug 16 21:50:59 2010	(r16150)
@@ -3,10 +3,11 @@
   * images: Nuke modules.devname on removal. (closes: #590607)
   * Add stable 2.6.35.1 and 2.6.35.2.
   * mm: fix page table unmap for stack guard page properly.
+  * mm: fix up some user-visible effects of the stack guard page.
   * config.loongson-2f: Enable USB and RTC for loongson-2f.
     Thanks Geert Stappers <stappers at stappers.nl> (closes: #583689)
 
- -- maximilian attems <maks at debian.org>  Mon, 16 Aug 2010 22:31:11 +0200
+ -- maximilian attems <maks at debian.org>  Mon, 16 Aug 2010 23:49:32 +0200
 
 linux-2.6 (2.6.35-1~experimental.1) experimental; urgency=low
 

Added: dists/trunk/linux-2.6/debian/patches/bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch	Mon Aug 16 21:50:59 2010	(r16150)
@@ -0,0 +1,91 @@
+From d7824370e26325c881b665350ce64fb0a4fde24a Mon Sep 17 00:00:00 2001
+From: Linus Torvalds <torvalds at linux-foundation.org>
+Date: Sun, 15 Aug 2010 11:35:52 -0700
+Subject: [PATCH] mm: fix up some user-visible effects of the stack guard page
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This commit makes the stack guard page somewhat less visible to user
+space. It does this by:
+
+ - not showing the guard page in /proc/<pid>/maps
+
+   It looks like lvm-tools will actually read /proc/self/maps to figure
+   out where all its mappings are, and effectively do a specialized
+   "mlockall()" in user space.  By not showing the guard page as part of
+   the mapping (by just adding PAGE_SIZE to the start for grows-up
+   pages), lvm-tools ends up not being aware of it.
+
+ - by also teaching the _real_ mlock() functionality not to try to lock
+   the guard page.
+
+   That would just expand the mapping down to create a new guard page,
+   so there really is no point in trying to lock it in place.
+
+It would perhaps be nice to show the guard page specially in
+/proc/<pid>/maps (or at least mark grow-down segments some way), but
+let's not open ourselves up to more breakage by user space from programs
+that depends on the exact deails of the 'maps' file.
+
+Special thanks to Henrique de Moraes Holschuh for diving into lvm-tools
+source code to see what was going on with the whole new warning.
+
+Reported-and-tested-by: François Valenduc <francois.valenduc at tvcablenet.be
+Reported-by: Henrique de Moraes Holschuh <hmh at hmh.eng.br>
+Cc: stable at kernel.org
+Signed-off-by: Linus Torvalds <torvalds at linux-foundation.org>
+---
+ fs/proc/task_mmu.c |    8 +++++++-
+ mm/mlock.c         |    8 ++++++++
+ 2 files changed, 15 insertions(+), 1 deletions(-)
+
+diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
+index aea1d3f..439fc1f 100644
+--- a/fs/proc/task_mmu.c
++++ b/fs/proc/task_mmu.c
+@@ -210,6 +210,7 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+ 	int flags = vma->vm_flags;
+ 	unsigned long ino = 0;
+ 	unsigned long long pgoff = 0;
++	unsigned long start;
+ 	dev_t dev = 0;
+ 	int len;
+ 
+@@ -220,8 +221,13 @@ static void show_map_vma(struct seq_file *m, struct vm_area_struct *vma)
+ 		pgoff = ((loff_t)vma->vm_pgoff) << PAGE_SHIFT;
+ 	}
+ 
++	/* 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/mlock.c b/mm/mlock.c
+index 3f82720..49e5e4c 100644
+--- a/mm/mlock.c
++++ b/mm/mlock.c
+@@ -167,6 +167,14 @@ static long __mlock_vma_pages_range(struct vm_area_struct *vma,
+ 	if (vma->vm_flags & VM_WRITE)
+ 		gup_flags |= FOLL_WRITE;
+ 
++	/* We don't try to access the guard page of a stack vma */
++	if (vma->vm_flags & VM_GROWSDOWN) {
++		if (start == vma->vm_start) {
++			start += PAGE_SIZE;
++			nr_pages--;
++		}
++	}
++
+ 	while (nr_pages > 0) {
+ 		int i;
+ 
+-- 
+1.7.1
+

Modified: dists/trunk/linux-2.6/debian/patches/series/1~experimental.2
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/series/1~experimental.2	Mon Aug 16 20:34:28 2010	(r16149)
+++ dists/trunk/linux-2.6/debian/patches/series/1~experimental.2	Mon Aug 16 21:50:59 2010	(r16150)
@@ -1,3 +1,4 @@
 + bugfix/all/stable/2.6.35.1.patch
 + bugfix/all/stable/2.6.35.2.patch
 + bugfix/all/mm-fix-page-table-unmap-for-stack-guard-page-properl.patch
++ bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch



More information about the Kernel-svn-changes mailing list