From: Lance Yang The hugepage collapsing code needs is_guard_pte_marker() to correctly handle PTE guard markers. Move the helper to a shared header and expose it. While at it, simplify the implementation. The current code is redundant as it effectively expands to: is_swap_pte(pte) && is_pte_marker_entry(...) && // from is_pte_marker() is_pte_marker_entry(...) // from is_guard_swp_entry() While a modern compiler could likely optimize this away, let's have clean code and not rely on it. Cc: Kairui Song Acked-by: David Hildenbrand Reviewed-by: Lorenzo Stoakes Signed-off-by: Lance Yang --- include/linux/swapops.h | 6 ++++++ mm/madvise.c | 6 ------ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/linux/swapops.h b/include/linux/swapops.h index 64ea151a7ae3..7475324c7757 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -469,6 +469,12 @@ static inline int is_guard_swp_entry(swp_entry_t entry) (pte_marker_get(entry) & PTE_MARKER_GUARD); } +static inline bool is_guard_pte_marker(pte_t ptent) +{ + return is_swap_pte(ptent) && + is_guard_swp_entry(pte_to_swp_entry(ptent)); +} + /* * This is a special version to check pte_none() just to cover the case when * the pte is a pte marker. It existed because in many cases the pte marker diff --git a/mm/madvise.c b/mm/madvise.c index 35ed4ab0d7c5..bd46e6788fac 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -1069,12 +1069,6 @@ static bool is_valid_guard_vma(struct vm_area_struct *vma, bool allow_locked) return !(vma->vm_flags & disallowed); } -static bool is_guard_pte_marker(pte_t ptent) -{ - return is_pte_marker(ptent) && - is_guard_swp_entry(pte_to_swp_entry(ptent)); -} - static int guard_install_pud_entry(pud_t *pud, unsigned long addr, unsigned long next, struct mm_walk *walk) { -- 2.49.0