Re: [External] Re: [PATCH v5 3/5] mm: hugetlb: fix a race between freeing and dissolving the page

2021-01-14 Thread Muchun Song
On Thu, Jan 14, 2021 at 11:38 PM Michal Hocko wrote: > > On Thu 14-01-21 21:47:36, Muchun Song wrote: > > On Thu, Jan 14, 2021 at 9:20 PM Michal Hocko wrote: > [...] > > > > @@ -1770,6 +1789,28 @@ int dissolve_free_huge_page(struct page *page) > > > > int nid = page_to_nid(head); >

Re: [External] Re: [PATCH v5 3/5] mm: hugetlb: fix a race between freeing and dissolving the page

2021-01-14 Thread Michal Hocko
On Thu 14-01-21 21:47:36, Muchun Song wrote: > On Thu, Jan 14, 2021 at 9:20 PM Michal Hocko wrote: [...] > > > @@ -1770,6 +1789,28 @@ int dissolve_free_huge_page(struct page *page) > > > int nid = page_to_nid(head); > > > if (h->free_huge_pages - h->resv_huge_pages == 0

Re: [External] Re: [PATCH v5 3/5] mm: hugetlb: fix a race between freeing and dissolving the page

2021-01-14 Thread Muchun Song
On Thu, Jan 14, 2021 at 9:20 PM Michal Hocko wrote: > > On Thu 14-01-21 18:35:13, Muchun Song wrote: > > There is a race condition between __free_huge_page() > > and dissolve_free_huge_page(). > > > > CPU0: CPU1: > > > > // page_count(page) == 1 > > put_page(page) > > __f

Re: [PATCH v5 3/5] mm: hugetlb: fix a race between freeing and dissolving the page

2021-01-14 Thread Michal Hocko
On Thu 14-01-21 18:35:13, Muchun Song wrote: > There is a race condition between __free_huge_page() > and dissolve_free_huge_page(). > > CPU0: CPU1: > > // page_count(page) == 1 > put_page(page) > __free_huge_page(page) > dissolve_free_huge_

[PATCH v5 3/5] mm: hugetlb: fix a race between freeing and dissolving the page

2021-01-14 Thread Muchun Song
There is a race condition between __free_huge_page() and dissolve_free_huge_page(). CPU0: CPU1: // page_count(page) == 1 put_page(page) __free_huge_page(page) dissolve_free_huge_page(page) spin_lock(&hugetlb_l