On 2025/1/20 15:49, David Hildenbrand wrote: > >>> if (folio_test_hugetlb(folio) && !folio_test_anon(folio)) { >>> struct address_space *mapping; >>> @@ -1572,7 +1598,7 @@ void unmap_poisoned_folio(struct folio *folio, enum ttu_flags ttu) >>> if (!mapping) { >>> pr_info("%#lx: could not lock mapping for mapped hugetlb folio\n", >>> folio_pfn(folio)); >>> - return; >>> + return -EBUSY; >>> } >>> try_to_unmap(folio, ttu|TTU_RMAP_LOCKED); >>> @@ -1580,6 +1606,8 @@ void unmap_poisoned_folio(struct folio *folio, enum ttu_flags ttu) >>> } else { >>> try_to_unmap(folio, ttu); >>> } >>> + >>> + return folio_mapped(folio) ? -EBUSY : 0; >> >> Do we really need this return value? It's unused in do_migrate_range(). > > I suggested it, because the folio_mapped() is nowadays extremely cheap. It cleans up hwpoison_user_mappings() quite nicely. > > Any particular reason we shouldn't be doing that? I was trying to keep code more clean (IMO) but no strong opinion. Thanks. .