]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
another .25 patch
authorGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Jul 2008 15:27:13 +0000 (08:27 -0700)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 16 Jul 2008 15:27:13 +0000 (08:27 -0700)
queue-2.6.25/fix-clear_refs_write-use-of-struct-mm_walk.patch [new file with mode: 0644]
queue-2.6.25/series

diff --git a/queue-2.6.25/fix-clear_refs_write-use-of-struct-mm_walk.patch b/queue-2.6.25/fix-clear_refs_write-use-of-struct-mm_walk.patch
new file mode 100644 (file)
index 0000000..550c092
--- /dev/null
@@ -0,0 +1,43 @@
+From 20cbc972617069c1ed434f62151e4de57d26ea46 Mon Sep 17 00:00:00 2001
+From: Andrew Morton <akpm@linux-foundation.org>
+Date: Sat, 5 Jul 2008 12:29:05 -0700
+Subject: Fix clear_refs_write() use of struct mm_walk
+
+From: Andrew Morton <akpm@linux-foundation.org>
+
+commit 20cbc972617069c1ed434f62151e4de57d26ea46 upstream
+
+Don't use a static entry, so as to prevent races during concurrent use
+of this function.
+
+Reported-by: Alexey Dobriyan <adobriyan@gmail.com>
+Cc: Matt Mackall <mpm@selenic.com>
+Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
+Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ fs/proc/task_mmu.c |    5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+--- a/fs/proc/task_mmu.c
++++ b/fs/proc/task_mmu.c
+@@ -480,8 +480,6 @@ static int clear_refs_pte_range(pmd_t *p
+       return 0;
+ }
+-static struct mm_walk clear_refs_walk = { .pmd_entry = clear_refs_pte_range };
+-
+ static ssize_t clear_refs_write(struct file *file, const char __user *buf,
+                               size_t count, loff_t *ppos)
+ {
+@@ -504,6 +502,9 @@ static ssize_t clear_refs_write(struct f
+               return -ESRCH;
+       mm = get_task_mm(task);
+       if (mm) {
++              struct mm_walk clear_refs_walk = {
++                      .pmd_entry = clear_refs_pte_range
++                      };
+               down_read(&mm->mmap_sem);
+               for (vma = mm->mmap; vma; vma = vma->vm_next)
+                       if (!is_vm_hugetlb_page(vma))
index a3bf32658cab31e012b2aca3930e0a574779ed71..d50c421982712c840ec0518cc491961faab23990 100644 (file)
@@ -7,4 +7,5 @@ md-fix-error-paths-if-md_probe-fails.patch
 md-don-t-acknowlege-that-stripe-expand-is-complete-until-it-really-is.patch
 md-ensure-interrupted-recovery-completed-properly.patch
 block-properly-notify-block-layer-of-sync-writes.patch
+fix-clear_refs_write-use-of-struct-mm_walk.patch
 xen-mask-unwanted-pte-bits-in-__supported_pte_mask.patch