This is a note to let you know that I've just added the patch titled
tmpfs: fix highmem swapoff crash regression
to the 2.6.38-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
tmpfs-fix-highmem-swapoff-crash-regression.patch
and it can be found in the queue-2.6.38 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree,
please let <[email protected]> know about it.
>From e6c9366b2adb52cba64b359b3050200743c7568c Mon Sep 17 00:00:00 2001
From: Hugh Dickins <[email protected]>
Date: Fri, 20 May 2011 15:47:33 -0700
Subject: tmpfs: fix highmem swapoff crash regression
From: Hugh Dickins <[email protected]>
commit e6c9366b2adb52cba64b359b3050200743c7568c upstream.
Commit 778dd893ae78 ("tmpfs: fix race between umount and swapoff")
forgot the new rules for strict atomic kmap nesting, causing
WARNING: at arch/x86/mm/highmem_32.c:81
from __kunmap_atomic(), then
BUG: unable to handle kernel paging request at fffb9000
from shmem_swp_set() when shmem_unuse_inode() is handling swapoff with
highmem in use. My disgrace again.
See
https://bugzilla.kernel.org/show_bug.cgi?id=35352
Reported-by: Witold Baryluk <[email protected]>
Signed-off-by: Hugh Dickins <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
Signed-off-by: Greg Kroah-Hartman <[email protected]>
---
mm/shmem.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -917,11 +917,12 @@ static int shmem_unuse_inode(struct shme
if (size > ENTRIES_PER_PAGE)
size = ENTRIES_PER_PAGE;
offset = shmem_find_swp(entry, ptr, ptr+size);
+ shmem_swp_unmap(ptr);
if (offset >= 0) {
shmem_dir_unmap(dir);
+ ptr = shmem_swp_map(subdir);
goto found;
}
- shmem_swp_unmap(ptr);
}
}
lost1:
Patches currently in stable-queue which might be from [email protected] are
queue-2.6.38/vm-fix-vm_pgoff-wrap-in-upward-expansion.patch
queue-2.6.38/tmpfs-fix-highmem-swapoff-crash-regression.patch
queue-2.6.38/tmpfs-fix-off-by-one-in-max_blocks-checks.patch
queue-2.6.38/tmpfs-fix-race-between-umount-and-swapoff.patch
queue-2.6.38/tmpfs-fix-race-between-swapoff-and-writepage.patch
queue-2.6.38/tmpfs-fix-race-between-umount-and-writepage.patch
queue-2.6.38/tmpfs-fix-spurious-enospc-when-racing-with-unswap.patch
_______________________________________________
stable mailing list
[email protected]
http://linux.kernel.org/mailman/listinfo/stable