> On Jan 13, 2024, at 02:08, Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> wrote: > > has_extra_refcount() makes the assumption that the page cache adds a ref > count of 1 and subtracts this in the extra_pins case. Commit a08c7193e4f1 > (mm/filemap: remove hugetlb special casing in filemap.c) modifies > __filemap_add_folio() by calling folio_ref_add(folio, nr); for all cases > (including hugtetlb) where nr is the number of pages in the folio. We > should adjust the number of references coming from the page cache by > subtracing the number of pages rather than 1. > > In hugetlbfs_read_iter(), folio_test_has_hwpoisoned() is testing the wrong > flag as, in the hugetlb case, memory-failure code calls > folio_test_set_hwpoison() to indicate poison. folio_test_hwpoison() is the > correct function to test for that flag. > > After these fixes, the hugetlb hwpoison read selftest passes all cases. > > Fixes: a08c7193e4f1 ("mm/filemap: remove hugetlb special casing in filemap.c") > Closes: https://lore.kernel.org/linux-mm/20230713001833.3778937-1-jiaqiyan@xxxxxxxxxx/T/#m8e1469119e5b831bbd05d495f96b842e4a1c5519 > Cc: <stable@xxxxxxxxxxxxxxx> # 6.7+ > Signed-off-by: Sidhartha Kumar <sidhartha.kumar@xxxxxxxxxx> > Reported-by: Muhammad Usama Anjum <usama.anjum@xxxxxxxxxxxxx> Acked-by: Muchun Song <muchun.song@xxxxxxxxx> Thanks.