From df53773c69b6bd7afa5312c4e820a1db6e001d35 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Tue, 14 Jan 2003 23:42:14 -0800 Subject: Fix page_address() to not re-evaluate its arguments multiple times under certain circumstances. This fixes svc_tcp_recvfrom(). Found by Ted Phelps --- include/linux/mm.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'include/linux') diff --git a/include/linux/mm.h b/include/linux/mm.h index 9d2c7e53fb88..50eb18eb0488 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -296,9 +296,10 @@ static inline void set_page_zone(struct page *page, unsigned long zone_num) page->flags |= zone_num << ZONE_SHIFT; } -#define lowmem_page_address(page) \ - __va( ( ((page) - page_zone(page)->zone_mem_map) \ - + page_zone(page)->zone_start_pfn) << PAGE_SHIFT) +static inline void * lowmem_page_address(struct page *page) +{ + return __va( ( (page - page_zone(page)->zone_mem_map) + page_zone(page)->zone_start_pfn) << PAGE_SHIFT); +} #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) #define HASHED_PAGE_VIRTUAL -- cgit v1.2.3