diff options
Diffstat (limited to 'include/linux/page_idle.h')
| -rw-r--r-- | include/linux/page_idle.h | 43 | 
1 files changed, 36 insertions, 7 deletions
| diff --git a/include/linux/page_idle.h b/include/linux/page_idle.h index bf268fa92c5b..fec40271339f 100644 --- a/include/linux/page_idle.h +++ b/include/linux/page_idle.h @@ -46,33 +46,62 @@ extern struct page_ext_operations page_idle_ops;  static inline bool page_is_young(struct page *page)  { -	return test_bit(PAGE_EXT_YOUNG, &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return false; + +	return test_bit(PAGE_EXT_YOUNG, &page_ext->flags);  }  static inline void set_page_young(struct page *page)  { -	set_bit(PAGE_EXT_YOUNG, &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return; + +	set_bit(PAGE_EXT_YOUNG, &page_ext->flags);  }  static inline bool test_and_clear_page_young(struct page *page)  { -	return test_and_clear_bit(PAGE_EXT_YOUNG, -				  &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return false; + +	return test_and_clear_bit(PAGE_EXT_YOUNG, &page_ext->flags);  }  static inline bool page_is_idle(struct page *page)  { -	return test_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return false; + +	return test_bit(PAGE_EXT_IDLE, &page_ext->flags);  }  static inline void set_page_idle(struct page *page)  { -	set_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return; + +	set_bit(PAGE_EXT_IDLE, &page_ext->flags);  }  static inline void clear_page_idle(struct page *page)  { -	clear_bit(PAGE_EXT_IDLE, &lookup_page_ext(page)->flags); +	struct page_ext *page_ext = lookup_page_ext(page); + +	if (unlikely(!page_ext)) +		return; + +	clear_bit(PAGE_EXT_IDLE, &page_ext->flags);  }  #endif /* CONFIG_64BIT */ |