On 14/08/2024 04:30, Yu Zhao wrote: >> @@ -3558,7 +3564,6 @@ static unsigned long deferred_split_scan(struct shrinker *shrink, >> next: >> folio_put(folio); >> } >> - > > Unintentional change above? Yes, unintended new line, will fix it. > >> spin_lock_irqsave(&ds_queue->split_queue_lock, flags); >> list_splice_tail(&list, &ds_queue->split_queue); >> spin_unlock_irqrestore(&ds_queue->split_queue_lock, flags); >> diff --git a/mm/hugetlb.c b/mm/hugetlb.c >> index 1fdd9eab240c..2ae2d9a18e40 100644 >> --- a/mm/hugetlb.c >> +++ b/mm/hugetlb.c >> @@ -1758,6 +1758,7 @@ static void __update_and_free_hugetlb_folio(struct hstate *h, >> free_gigantic_folio(folio, huge_page_order(h)); >> } else { >> INIT_LIST_HEAD(&folio->_deferred_list); >> + folio_clear_partially_mapped(folio); > > Why does it need to clear a flag that should never be set on hugeTLB folios? > > HugeTLB does really use _deferred_list -- it clears it only to avoid > bad_page() because of the overlapping fields: > void *_hugetlb_subpool; > void *_hugetlb_cgroup; Yes, thats right, will remove it. Thanks!