Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

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.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Rik van Riel <riel@redhat.com>
Cc: Andrea Arcangeli <aarcange@redhat.com>
Cc: Michel Lespinasse <walken@google.com>
Cc: Mel Gorman <mel@csn.ul.ie>
Cc: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Ian Campbell and committed by
Linus Torvalds
aa462abe f9918794

+4 -4
+2 -2
include/asm-generic/memory_model.h
··· 39 39 }) 40 40 41 41 #define __page_to_pfn(pg) \ 42 - ({ struct page *__pg = (pg); \ 42 + ({ const struct page *__pg = (pg); \ 43 43 struct pglist_data *__pgdat = NODE_DATA(page_to_nid(__pg)); \ 44 44 (unsigned long)(__pg - __pgdat->node_mem_map) + \ 45 45 __pgdat->node_start_pfn; \ ··· 57 57 * section[i].section_mem_map == mem_map's address - start_pfn; 58 58 */ 59 59 #define __page_to_pfn(pg) \ 60 - ({ struct page *__pg = (pg); \ 60 + ({ const struct page *__pg = (pg); \ 61 61 int __sec = page_to_section(__pg); \ 62 62 (unsigned long)(__pg - __section_mem_map_addr(__nr_to_section(__sec))); \ 63 63 })
+2 -2
include/linux/mm.h
··· 685 685 page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT; 686 686 } 687 687 688 - static inline unsigned long page_to_section(struct page *page) 688 + static inline unsigned long page_to_section(const struct page *page) 689 689 { 690 690 return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK; 691 691 } ··· 720 720 721 721 static __always_inline void *lowmem_page_address(const struct page *page) 722 722 { 723 - return __va(PFN_PHYS(page_to_pfn((struct page *)page))); 723 + return __va(PFN_PHYS(page_to_pfn(page))); 724 724 } 725 725 726 726 #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL)