The patch titled Subject: mm/madvise: free hwpoison and swapin error entry in madvise_free_pte_range has been added to the -mm tree. Its filename is mm-madvise-free-hwpoison-and-swapin-error-entry-in-madvise_free_pte_range.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mm-madvise-free-hwpoison-and-swapin-error-entry-in-madvise_free_pte_range.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/mm-madvise-free-hwpoison-and-swapin-error-entry-in-madvise_free_pte_range.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Miaohe Lin <linmiaohe@xxxxxxxxxx> Subject: mm/madvise: free hwpoison and swapin error entry in madvise_free_pte_range Once the MADV_FREE operation has succeeded, callers can expect they might get zero-fill pages if accessing the memory again. Therefore it should be safe to delete the hwpoison entry and swapin error entry. There is no reason to kill the process if it has called MADV_FREE on the range. Link: https://lkml.kernel.org/r/20220424091105.48374-4-linmiaohe@xxxxxxxxxx Signed-off-by: Miaohe Lin <linmiaohe@xxxxxxxxxx> Suggested-by: Alistair Popple <apopple@xxxxxxxxxx> Acked-by: David Hildenbrand <david@xxxxxxxxxx> Cc: Matthew Wilcox <willy@xxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Cc: David Howells <dhowells@xxxxxxxxxx> Cc: NeilBrown <neilb@xxxxxxx> Cc: Suren Baghdasaryan <surenb@xxxxxxxxxx> Cc: Minchan Kim <minchan@xxxxxxxxxx> Cc: Peter Xu <peterx@xxxxxxxxxx> Cc: Stephen Rothwell <sfr@xxxxxxxxxxxxxxxx> Cc: Naoya Horiguchi <naoya.horiguchi@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/madvise.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) --- a/mm/madvise.c~mm-madvise-free-hwpoison-and-swapin-error-entry-in-madvise_free_pte_range +++ a/mm/madvise.c @@ -624,11 +624,14 @@ static int madvise_free_pte_range(pmd_t swp_entry_t entry; entry = pte_to_swp_entry(ptent); - if (non_swap_entry(entry)) - continue; - nr_swap--; - free_swap_and_cache(entry); - pte_clear_not_present_full(mm, addr, pte, tlb->fullmm); + if (!non_swap_entry(entry)) { + nr_swap--; + free_swap_and_cache(entry); + pte_clear_not_present_full(mm, addr, pte, tlb->fullmm); + } else if (is_hwpoison_entry(entry) || + is_swapin_error_entry(entry)) { + pte_clear_not_present_full(mm, addr, pte, tlb->fullmm); + } continue; } _ Patches currently in -mm which might be from linmiaohe@xxxxxxxxxx are mm-swapfile-unuse_pte-can-map-random-data-if-swap-read-fails.patch mm-swapfile-fix-lost-swap-bits-in-unuse_pte.patch mm-shmem-make-shmem_init-return-void.patch mm-memcg-remove-unneeded-nr_scanned.patch mm-mmapc-use-helper-mlock_future_check.patch mm-mremap-use-helper-mlock_future_check.patch mm-mremap-avoid-unneeded-do_munmap-call.patch mm-memory-failurec-minor-cleanup-for-hwpoisonhandlable.patch mm-memory-failurec-dissolve-truncated-hugetlb-page.patch mm-vmscan-remove-obsolete-comment-in-get_scan_count.patch mm-vmscan-fix-comment-for-current_may_throttle.patch mm-vmscan-fix-comment-for-isolate_lru_pages.patch mm-z3fold-declare-z3fold_mount-with-__init.patch mm-z3fold-remove-obsolete-comment-in-z3fold_alloc.patch mm-z3fold-minor-clean-up-for-z3fold_free.patch mm-z3fold-remove-unneeded-page_mapcount_reset-and-clearpageprivate.patch mm-z3fold-remove-confusing-local-variable-l-reassignment.patch mm-z3fold-move-decrement-of-pool-pages_nr-into-__release_z3fold_page.patch mm-z3fold-remove-redundant-list_del_init-of-zhdr-buddy-in-z3fold_free.patch mm-z3fold-remove-unneeded-page_headless-check-in-free_handle.patch mm-compaction-use-helper-isolation_suitable.patch drivers-base-nodec-fix-compaction-sysfs-file-leak.patch mm-mempolicy-clean-up-the-code-logic-in-queue_pages_pte_range.patch mm-migration-remove-unneeded-local-variable-mapping_locked.patch mm-migration-remove-unneeded-local-variable-page_lru.patch mm-migration-use-helper-function-vma_lookup-in-add_page_for_migration.patch mm-migration-use-helper-macro-min-in-do_pages_stat.patch mm-migration-avoid-unneeded-nodemask_t-initialization.patch mm-migration-remove-some-duplicated-codes-in-migrate_pages.patch mm-migration-fix-potential-page-refcounts-leak-in-migrate_pages.patch mm-migration-fix-potential-invalid-node-access-for-reclaim-based-migration.patch mm-migration-fix-possible-do_pages_stat_array-racing-with-memory-offline.patch mm-madvise-fix-potential-pte_unmap_unlock-pte-error.patch mm-madvise-free-hwpoison-and-swapin-error-entry-in-madvise_free_pte_range.patch mm-compaction-remove-unneeded-return-value-of-kcompactd_run.patch mm-compaction-remove-unneeded-pfn-update.patch mm-compaction-remove-unneeded-assignment-to-isolate_start_pfn.patch mm-compaction-clean-up-comment-for-sched-contention.patch mm-compaction-clean-up-comment-about-suitable-migration-target-recheck.patch mm-compaction-use-compact_cluster_max-in-compactionc.patch mm-compaction-use-helper-compound_nr-in-isolate_migratepages_block.patch mm-compaction-clean-up-comment-about-async-compaction-in-isolate_migratepages.patch mm-compaction-avoid-possible-null-pointer-dereference-in-kcompactd_cpu_online.patch mm-compaction-make-compaction_zonelist_suitable-return-false-when-compact_success.patch mm-compaction-simplify-the-code-in-__compact_finished.patch mm-compaction-make-sure-highest-is-above-the-min_pfn.patch