Message ID | 20220318111709.60311-10-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | A few cleanup and fixup patches for migration | expand |
On Thu, Mar 17, 2022 at 10:41 PM Miaohe Lin <linmiaohe@huawei.com> wrote: > > In -ENOMEM case, there might be some subpages of fail-to-migrate THPs > left in thp_split_pages list. We should move them back to migration > list so that they could be put back to the right list by the caller > otherwise the page refcnt will be leaked here. Also adjust nr_failed > and nr_thp_failed accordingly to make vm events account more accurate. > > Fixes: b5bade978e9b ("mm: migrate: fix the return value of migrate_pages()") > Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> > Reviewed-by: Zi Yan <ziy@nvidia.com> > Reviewed-by: "Huang, Ying" <ying.huang@intel.com> > Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Muchun Song <songmuchun@bytedance.com>
diff --git a/mm/migrate.c b/mm/migrate.c index 63a87ef0996f..97dfd1f4870d 100644 --- a/mm/migrate.c +++ b/mm/migrate.c @@ -1438,6 +1438,14 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page, } nr_failed_pages += nr_subpages; + /* + * There might be some subpages of fail-to-migrate THPs + * left in thp_split_pages list. Move them back to migration + * list so that they could be put back to the right list by + * the caller otherwise the page refcnt will be leaked. + */ + list_splice_init(&thp_split_pages, from); + nr_thp_failed += thp_retry; goto out; case -EAGAIN: if (is_thp)