Loading include/linux/mm.h +0 −8 Original line number Diff line number Diff line Loading @@ -1625,14 +1625,6 @@ extern int sysctl_memory_failure_recovery; extern void shake_page(struct page *p, int access); extern atomic_long_t mce_bad_pages; extern int soft_offline_page(struct page *page, int flags); #ifdef CONFIG_MEMORY_FAILURE int is_hwpoison_address(unsigned long addr); #else static inline int is_hwpoison_address(unsigned long addr) { return 0; } #endif extern void dump_page(struct page *page); Loading mm/memory-failure.c +0 −32 Original line number Diff line number Diff line Loading @@ -1487,35 +1487,3 @@ int soft_offline_page(struct page *page, int flags) /* keep elevated page count for bad page */ return ret; } /* * The caller must hold current->mm->mmap_sem in read mode. */ int is_hwpoison_address(unsigned long addr) { pgd_t *pgdp; pud_t pud, *pudp; pmd_t pmd, *pmdp; pte_t pte, *ptep; swp_entry_t entry; pgdp = pgd_offset(current->mm, addr); if (!pgd_present(*pgdp)) return 0; pudp = pud_offset(pgdp, addr); pud = *pudp; if (!pud_present(pud) || pud_large(pud)) return 0; pmdp = pmd_offset(pudp, addr); pmd = *pmdp; if (!pmd_present(pmd) || pmd_large(pmd)) return 0; ptep = pte_offset_map(pmdp, addr); pte = *ptep; pte_unmap(ptep); if (!is_swap_pte(pte)) return 0; entry = pte_to_swp_entry(pte); return is_hwpoison_entry(entry); } EXPORT_SYMBOL_GPL(is_hwpoison_address); Loading
include/linux/mm.h +0 −8 Original line number Diff line number Diff line Loading @@ -1625,14 +1625,6 @@ extern int sysctl_memory_failure_recovery; extern void shake_page(struct page *p, int access); extern atomic_long_t mce_bad_pages; extern int soft_offline_page(struct page *page, int flags); #ifdef CONFIG_MEMORY_FAILURE int is_hwpoison_address(unsigned long addr); #else static inline int is_hwpoison_address(unsigned long addr) { return 0; } #endif extern void dump_page(struct page *page); Loading
mm/memory-failure.c +0 −32 Original line number Diff line number Diff line Loading @@ -1487,35 +1487,3 @@ int soft_offline_page(struct page *page, int flags) /* keep elevated page count for bad page */ return ret; } /* * The caller must hold current->mm->mmap_sem in read mode. */ int is_hwpoison_address(unsigned long addr) { pgd_t *pgdp; pud_t pud, *pudp; pmd_t pmd, *pmdp; pte_t pte, *ptep; swp_entry_t entry; pgdp = pgd_offset(current->mm, addr); if (!pgd_present(*pgdp)) return 0; pudp = pud_offset(pgdp, addr); pud = *pudp; if (!pud_present(pud) || pud_large(pud)) return 0; pmdp = pmd_offset(pudp, addr); pmd = *pmdp; if (!pmd_present(pmd) || pmd_large(pmd)) return 0; ptep = pte_offset_map(pmdp, addr); pte = *ptep; pte_unmap(ptep); if (!is_swap_pte(pte)) return 0; entry = pte_to_swp_entry(pte); return is_hwpoison_entry(entry); } EXPORT_SYMBOL_GPL(is_hwpoison_address);