diff options
Diffstat (limited to 'trunk/2.6.18/30051_tmpfs-restore-clear_highpage.patch')
-rw-r--r-- | trunk/2.6.18/30051_tmpfs-restore-clear_highpage.patch | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/trunk/2.6.18/30051_tmpfs-restore-clear_highpage.patch b/trunk/2.6.18/30051_tmpfs-restore-clear_highpage.patch new file mode 100644 index 0000000..c4ed61c --- /dev/null +++ b/trunk/2.6.18/30051_tmpfs-restore-clear_highpage.patch @@ -0,0 +1,44 @@ +commit e84e2e132c9c66d8498e7710d4ea532d1feaaac5 +Author: Hugh Dickins <hugh@veritas.com> +Date: Wed Nov 28 18:55:10 2007 +0000 + + tmpfs: restore missing clear_highpage + + tmpfs was misconverted to __GFP_ZERO in 2.6.11. There's an unusual case in + which shmem_getpage receives the page from its caller instead of allocating. + We must cover this case by clear_highpage before SetPageUptodate, as before. + + Signed-off-by: Hugh Dickins <hugh@veritas.com> + Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> + +Adjusted to apply to Debian's 2.6.18 by dann frazier <dannf@hp.com> + +diff -urpN linux-source-2.6.18.orig/mm/shmem.c linux-source-2.6.18/mm/shmem.c +--- linux-source-2.6.18.orig/mm/shmem.c 2007-12-01 15:24:42.000000000 -0700 ++++ linux-source-2.6.18/mm/shmem.c 2007-12-17 18:24:57.000000000 -0700 +@@ -972,7 +972,7 @@ shmem_alloc_page(gfp_t gfp, struct shmem + pvma.vm_policy = mpol_shared_policy_lookup(&info->policy, idx); + pvma.vm_pgoff = idx; + pvma.vm_end = PAGE_SIZE; +- page = alloc_page_vma(gfp | __GFP_ZERO, &pvma, 0); ++ page = alloc_page_vma(gfp, &pvma, 0); + mpol_free(pvma.vm_policy); + return page; + } +@@ -992,7 +992,7 @@ shmem_swapin(struct shmem_inode_info *in + static inline struct page * + shmem_alloc_page(gfp_t gfp,struct shmem_inode_info *info, unsigned long idx) + { +- return alloc_page(gfp | __GFP_ZERO); ++ return alloc_page(gfp); + } + #endif + +@@ -1201,6 +1201,7 @@ repeat: + + info->alloced++; + spin_unlock(&info->lock); ++ clear_highpage(filepage); + flush_dcache_page(filepage); + SetPageUptodate(filepage); + } |