diff options
| author | Linus Torvalds <torvalds@penguin.transmeta.com> | 2003-01-14 23:42:14 -0800 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2003-01-14 23:42:14 -0800 |
| commit | df53773c69b6bd7afa5312c4e820a1db6e001d35 (patch) | |
| tree | 46192b32bfe7e752ee6cd7c1df04c3cb7985991d /include | |
| parent | 71a17fca74e1144e6761b20ed8a019083b0822e8 (diff) | |
Fix page_address() to not re-evaluate its arguments
multiple times under certain circumstances.
This fixes svc_tcp_recvfrom().
Found by Ted Phelps <phelps@dstc.edu.au>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mm.h | 7 |
1 files changed, 4 insertions, 3 deletions
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 |
