diff options
author | Chris Metcalf <cmetcalf@tilera.com> | 2010-05-24 17:32:53 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-05-25 11:07:02 -0400 |
commit | c6f6b596a5a73e63e5e930c414375c0c389199ab (patch) | |
tree | 900d4b3a6d198edc2045511b5b8d6001755bcfbf | |
parent | 4eaf3f64397c3db3c5785eee508270d62a9fabd9 (diff) |
mm: make lowmem_page_address() use PFN_PHYS() for improved portability
This ensures that platforms with lowmem PAs above 32 bits work correctly
by avoiding truncating the PA during a left shift.
Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Cc: Barry Song <21cnbao@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | include/linux/mm.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 963f908af9d..b969efb0378 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/debug_locks.h> | 13 | #include <linux/debug_locks.h> |
14 | #include <linux/mm_types.h> | 14 | #include <linux/mm_types.h> |
15 | #include <linux/range.h> | 15 | #include <linux/range.h> |
16 | #include <linux/pfn.h> | ||
16 | 17 | ||
17 | struct mempolicy; | 18 | struct mempolicy; |
18 | struct anon_vma; | 19 | struct anon_vma; |
@@ -595,7 +596,7 @@ static inline void set_page_links(struct page *page, enum zone_type zone, | |||
595 | 596 | ||
596 | static __always_inline void *lowmem_page_address(struct page *page) | 597 | static __always_inline void *lowmem_page_address(struct page *page) |
597 | { | 598 | { |
598 | return __va(page_to_pfn(page) << PAGE_SHIFT); | 599 | return __va(PFN_PHYS(page_to_pfn(page))); |
599 | } | 600 | } |
600 | 601 | ||
601 | #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) | 602 | #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) |