diff options
Diffstat (limited to 'include/linux/mm.h')
| -rw-r--r-- | include/linux/mm.h | 19 | 
1 files changed, 14 insertions, 5 deletions
diff --git a/include/linux/mm.h b/include/linux/mm.h index 3172a1c0f08..7438071b44a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h @@ -685,7 +685,7 @@ static inline void set_page_section(struct page *page, unsigned long section)  	page->flags |= (section & SECTIONS_MASK) << SECTIONS_PGSHIFT;  } -static inline unsigned long page_to_section(struct page *page) +static inline unsigned long page_to_section(const struct page *page)  {  	return (page->flags >> SECTIONS_PGSHIFT) & SECTIONS_MASK;  } @@ -720,7 +720,7 @@ static inline void set_page_links(struct page *page, enum zone_type zone,  static __always_inline void *lowmem_page_address(const struct page *page)  { -	return __va(PFN_PHYS(page_to_pfn((struct page *)page))); +	return __va(PFN_PHYS(page_to_pfn(page)));  }  #if defined(CONFIG_HIGHMEM) && !defined(WANT_PAGE_VIRTUAL) @@ -737,7 +737,7 @@ static __always_inline void *lowmem_page_address(const struct page *page)  #endif  #if defined(HASHED_PAGE_VIRTUAL) -void *page_address(struct page *page); +void *page_address(const struct page *page);  void set_page_address(struct page *page, void *virtual);  void page_address_init(void);  #endif @@ -962,6 +962,8 @@ int invalidate_inode_page(struct page *page);  #ifdef CONFIG_MMU  extern int handle_mm_fault(struct mm_struct *mm, struct vm_area_struct *vma,  			unsigned long address, unsigned int flags); +extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, +			    unsigned long address, unsigned int fault_flags);  #else  static inline int handle_mm_fault(struct mm_struct *mm,  			struct vm_area_struct *vma, unsigned long address, @@ -971,6 +973,14 @@ static inline int handle_mm_fault(struct mm_struct *mm,  	BUG();  	return VM_FAULT_SIGBUS;  } +static inline int fixup_user_fault(struct task_struct *tsk, +		struct mm_struct *mm, unsigned long address, +		unsigned int fault_flags) +{ +	/* should never happen if there's no MMU */ +	BUG(); +	return -EFAULT; +}  #endif  extern int make_pages_present(unsigned long addr, unsigned long end); @@ -988,8 +998,6 @@ int get_user_pages(struct task_struct *tsk, struct mm_struct *mm,  int get_user_pages_fast(unsigned long start, int nr_pages, int write,  			struct page **pages);  struct page *get_dump_page(unsigned long addr); -extern int fixup_user_fault(struct task_struct *tsk, struct mm_struct *mm, -			    unsigned long address, unsigned int fault_flags);  extern int try_to_release_page(struct page * page, gfp_t gfp_mask);  extern void do_invalidatepage(struct page *page, unsigned long offset); @@ -1600,6 +1608,7 @@ enum mf_flags {  };  extern void memory_failure(unsigned long pfn, int trapno);  extern int __memory_failure(unsigned long pfn, int trapno, int flags); +extern void memory_failure_queue(unsigned long pfn, int trapno, int flags);  extern int unpoison_memory(unsigned long pfn);  extern int sysctl_memory_failure_early_kill;  extern int sysctl_memory_failure_recovery;  |