History

mm: fix __page_to_pfn for a const struct page argument

This allows the cast in lowmem_page_address (introduced as a warning fixup to 33dd4e0ec911 "mm: make some struct page's const") to be removed. Propagate const'ness to page_to_section() as well since it is required by __page_to_pfn.

Ian Campbell committed 15 years ago

Commit aa462ab1 parent f9918792 files · +4 −4Browse files

Unified · Split

2 files
  1. include/asm-generic/memory_model.h +2 −2
  2. include/linux/mm.h +2 −2
include/asm-generic/memory_model.h+2−2
@@ -39,7 +39,7 @@ · 38 unmodified lines
3939 })
4040
4141 #define __page_to_pfn(pg) \
42−({ struct page *__pg = (pg); \
42+({ const struct page *__pg = (pg); \
4343 struct pglist_data *__pgdat = NODE_DATA(page_to_nid(__pg)); \
4444 (unsigned long)(__pg - __pgdat->node_mem_map) + \
4545 __pgdat->node_start_pfn; \
@@ -57,7 +57,7 @@ · 11 unmodified lines
5757 * section[i].section_mem_map == mem_map's address - start_pfn;
5858 */
5959 #define __page_to_pfn(pg) \
60−({ struct page *__pg = (pg); \
60+({ const struct page *__pg = (pg); \
6161 int __sec = page_to_section(__pg); \
6262 (unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec))); \
6363 })
include/linux/mm.h+2−2
@@ -685,7 +685,7 @@ static inline void set_page_section(struct page *page, unsigned long section) · 684 unmodified lines
685685 page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;
686686 }
687687
688−static inline unsigned long page_to_section(struct page *page)
688+static inline unsigned long page_to_section(const struct page *page)
689689 {
690690 return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;
691691 }
@@ -720,7 +720,7 @@ static inline void set_page_links(struct page *page, enum zone_type zone, · 28 unmodified lines
720720
721721 static __always_inline void *lowmem_page_address(const struct page *page)
722722 {
723− return __va(PFN_PHYS(page_to_pfn((struct page *)page)));
723+ return __va(PFN_PHYS(page_to_pfn(page)));
724724 }
725725
726726 #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL)