add missing mm lvm fixup patch
reprepare to release 2.6.35-1~experimental.2 svn path=/dists/trunk/linux-2.6/; revision=16150
This commit is contained in:
parent
1dbaa13e7b
commit
79fc48200d
|
@ -3,10 +3,11 @@ linux-2.6 (2.6.35-1~experimental.2) experimental; urgency=low
|
||||||
* images: Nuke modules.devname on removal. (closes: #590607)
|
* images: Nuke modules.devname on removal. (closes: #590607)
|
||||||
* Add stable 2.6.35.1 and 2.6.35.2.
|
* Add stable 2.6.35.1 and 2.6.35.2.
|
||||||
* mm: fix page table unmap for stack guard page properly.
|
* 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.
|
* config.loongson-2f: Enable USB and RTC for loongson-2f.
|
||||||
Thanks Geert Stappers <stappers@stappers.nl> (closes: #583689)
|
Thanks Geert Stappers <stappers@stappers.nl> (closes: #583689)
|
||||||
|
|
||||||
-- maximilian attems <maks@debian.org> Mon, 16 Aug 2010 22:31:11 +0200
|
-- maximilian attems <maks@debian.org> Mon, 16 Aug 2010 23:49:32 +0200
|
||||||
|
|
||||||
linux-2.6 (2.6.35-1~experimental.1) experimental; urgency=low
|
linux-2.6 (2.6.35-1~experimental.1) experimental; urgency=low
|
||||||
|
|
||||||
|
|
91
debian/patches/bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch
vendored
Normal file
91
debian/patches/bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch
vendored
Normal file
|
@ -0,0 +1,91 @@
|
||||||
|
From d7824370e26325c881b665350ce64fb0a4fde24a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Linus Torvalds <torvalds@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@tvcablenet.be
|
||||||
|
Reported-by: Henrique de Moraes Holschuh <hmh@hmh.eng.br>
|
||||||
|
Cc: stable@kernel.org
|
||||||
|
Signed-off-by: Linus Torvalds <torvalds@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
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
+ bugfix/all/stable/2.6.35.1.patch
|
+ bugfix/all/stable/2.6.35.1.patch
|
||||||
+ bugfix/all/stable/2.6.35.2.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-page-table-unmap-for-stack-guard-page-properl.patch
|
||||||
|
+ bugfix/all/mm-fix-up-some-user-visible-effects-of-the-stack-gua.patch
|
||||||
|
|
Loading…
Reference in New Issue