From: Matt Mackall Date: Tue, 9 Dec 2008 21:14:21 +0000 (-0800) Subject: pagemap: fix 32-bit pagemap regression X-Git-Tag: v2.6.27.9~13 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=35b9d8e0aa1268072f0a9238d738558c64c77372;p=thirdparty%2Fkernel%2Fstable.git pagemap: fix 32-bit pagemap regression commit 49c50342c728344b79c8f9e8293637fe80ef5ad5 upstream. The large pages fix from bcf8039ed45 broke 32-bit pagemap by pulling the pagemap entry code out into a function with the wrong return type. Pagemap entries are 64 bits on all systems and unsigned long is only 32 bits on 32-bit systems. Signed-off-by: Matt Mackall Reported-by: Doug Graham Cc: Alexey Dobriyan Cc: Dave Hansen Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index f3ada047c890c..8b84227b0c448 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -563,9 +563,9 @@ static u64 swap_pte_to_pagemap_entry(pte_t pte) return swp_type(e) | (swp_offset(e) << MAX_SWAPFILES_SHIFT); } -static unsigned long pte_to_pagemap_entry(pte_t pte) +static u64 pte_to_pagemap_entry(pte_t pte) { - unsigned long pme = 0; + u64 pme = 0; if (is_swap_pte(pte)) pme = PM_PFRAME(swap_pte_to_pagemap_entry(pte)) | PM_PSHIFT(PAGE_SHIFT) | PM_SWAP;