diff options
author | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-21 14:43:50 -0700 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-05-21 14:43:50 -0700 |
commit | cf7545ccaa008bf063012c48f8654d84b25a6952 (patch) | |
tree | 378c438d0bbc4e64a29fde177f4eb1d2da18a1a3 | |
parent | 06753ab0251cba8ca405ce72be9f865de0b33d00 (diff) | |
download | stable-queue-cf7545ccaa008bf063012c48f8654d84b25a6952.tar.gz |
.38 patches
-rw-r--r-- | queue-2.6.38/series | 1 | ||||
-rw-r--r-- | queue-2.6.38/tmpfs-fix-highmem-swapoff-crash-regression.patch | 49 |
2 files changed, 50 insertions, 0 deletions
diff --git a/queue-2.6.38/series b/queue-2.6.38/series index 52d5900e3e..a26619040d 100644 --- a/queue-2.6.38/series +++ b/queue-2.6.38/series @@ -68,3 +68,4 @@ revert-retrieve-the-caching-mode-page.patch cifs-clean-up-various-nits-in-unicode-routines-try-2.patch cifs-fix-cifsconverttoucs-for-the-mapchars-case.patch iwlegacy-fix-ibss-mode-crashes.patch +tmpfs-fix-highmem-swapoff-crash-regression.patch diff --git a/queue-2.6.38/tmpfs-fix-highmem-swapoff-crash-regression.patch b/queue-2.6.38/tmpfs-fix-highmem-swapoff-crash-regression.patch new file mode 100644 index 0000000000..dc58c06979 --- /dev/null +++ b/queue-2.6.38/tmpfs-fix-highmem-swapoff-crash-regression.patch @@ -0,0 +1,49 @@ +From e6c9366b2adb52cba64b359b3050200743c7568c Mon Sep 17 00:00:00 2001 +From: Hugh Dickins <hughd@google.com> +Date: Fri, 20 May 2011 15:47:33 -0700 +Subject: tmpfs: fix highmem swapoff crash regression + +From: Hugh Dickins <hughd@google.com> + +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 <baryluk@smp.if.uj.edu.pl> +Signed-off-by: Hugh Dickins <hughd@google.com> +Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> +Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> + +--- + 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: |