| 2 +- mm/memory.c | 4 ++-- 6 files changed, 21 insertions(+), 6 deletions(-) diff --git a/arch/s390/mm/gmap_helpers.c b/arch/s390/mm/gmap_helpers.c index 2c41276a34c5..222a26d09cbb 100644 --- a/arch/s390/mm/gmap_helpers.c +++ b/arch/s390/mm/gmap_helpers.c @@ -28,7 +28,7 @@ */ static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!is_non_present_entry(entry)) + if (is_swap_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) dec_mm_counter(mm, mm_counter(pfn_swap_entry_folio(entry))); diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 0c795f3c324f..a15befcf6a8c 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c @@ -685,7 +685,7 @@ void ptep_unshadow_pte(struct mm_struct *mm, unsigned long saddr, pte_t *ptep) static void ptep_zap_swap_entry(struct mm_struct *mm, swp_entry_t entry) { - if (!is_non_present_entry(entry)) + if (is_swap_entry(entry)) dec_mm_counter(mm, MM_SWAPENTS); else if (is_migration_entry(entry)) { struct folio *folio = pfn_swap_entry_folio(entry); diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 28f30e01e504..d62fdae57dce 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -1022,7 +1022,7 @@ static void smaps_pte_entry(pte_t *pte, unsigned long addr, } else { swp_entry_t swpent = pte_to_swp_entry(ptent); - if (!is_non_present_entry(swpent)) { + if (is_swap_entry(swpent)) { int mapcount; mss->swap += PAGE_SIZE; diff --git a/include/linux/swapops.h b/include/linux/swapops.h index fb463d75fa90..c96c31671230 100644 --- a/include/linux/swapops.h +++ b/include/linux/swapops.h @@ -661,6 +661,21 @@ static inline bool is_non_present_entry(swp_entry_t entry) return swp_type(entry) >= MAX_SWAPFILES; } +/** + * is_swap_entry() - Determines if this is a swap entry. + * @entry: The entry to examine. + * + * Determines whether data encoded in non-present leaf page tables is a + * swap entry and NOT a migration entry, device private entry, market + * entry, etc. + * + * Returns true if it is a swap entry, otherwise false. + */ +static inline bool is_swap_entry(swp_entry_t entry) +{ + return !is_non_present_entry(entry); +} + static inline int is_pmd_non_present_folio_entry(pmd_t pmd) { return is_pmd_migration_entry(pmd) || is_pmd_device_private_entry(pmd); diff --git a/mm/madvise.c b/mm/madvise.c index a259dae2b899..4bf098986cb4 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -690,7 +690,7 @@ static int madvise_free_pte_range(pmd_t *pmd, unsigned long addr, swp_entry_t entry; entry = pte_to_swp_entry(ptent); - if (!is_non_present_entry(entry)) { + if (is_swap_entry(entry)) { max_nr = (end - addr) / PAGE_SIZE; nr = swap_pte_batch(pte, max_nr, ptent); nr_swap -= nr; diff --git a/mm/memory.c b/mm/memory.c index 8968ba0b076f..4f4179eb70c0 100644 --- a/mm/memory.c +++ b/mm/memory.c @@ -931,7 +931,7 @@ copy_nonpresent_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm, struct page *page; swp_entry_t entry = pte_to_swp_entry(orig_pte); - if (likely(!is_non_present_entry(entry))) { + if (likely(is_swap_entry(entry))) { if (swap_duplicate(entry) < 0) return -EIO; @@ -1739,7 +1739,7 @@ static inline int zap_nonpresent_ptes(struct mmu_gather *tlb, rss[mm_counter(folio)]--; folio_remove_rmap_pte(folio, page, vma); folio_put(folio); - } else if (!is_non_present_entry(entry)) { + } else if (is_swap_entry(entry)) { /* Genuine swap entries, hence a private anon pages */ if (!should_zap_cows(details)) return 1; -- 2.51.0[RFC PATCH 12/12] mm: provide is_swap_entry() and use itLorenzo Stoakes undefinedAndrew Morton undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined undefined¨eƒĂP