Re: [PATCH 03/10] mm/hugetlb: Protect follow_huge_(pud|pgd) functions from race
From: Anshuman Khandual <hidden>
Date: 2016-04-11 05:39:58
Also in:
linux-mm, lkml
On 04/07/2016 02:56 PM, Balbir Singh wrote:
On 07/04/16 15:37, Anshuman Khandual wrote:quoted
quoted
follow_huge_(pmd|pud|pgd) functions are used to walk the page table and fetch the page struct during 'follow_page_mask' call. There are possible race conditions faced by these functions which arise out of simultaneous calls of move_pages() and freeing of huge pages. This was fixed partly by the previous commit e66f17ff7177 ("mm/hugetlb: take page table lock in follow_huge_pmd()") for only PMD based huge pages. After implementing similar logic, functions like follow_huge_(pud|pgd) are now safe from above mentioned race conditions and also can support FOLL_GET. Generic version of the function 'follow_huge_addr' has been left as it is and its upto the architecture to decide on it. Signed-off-by: Anshuman Khandual <redacted> --- include/linux/mm.h | 33 +++++++++++++++++++++++++++ mm/hugetlb.c | 67 ++++++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 91 insertions(+), 9 deletions(-)diff --git a/include/linux/mm.h b/include/linux/mm.h index ffcff53..734182a 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h@@ -1751,6 +1751,19 @@ static inline void pgtable_page_dtor(struct page *page) NULL: pte_offset_kernel(pmd, address)) #if USE_SPLIT_PMD_PTLOCKSDo we still use USE_SPLIT_PMD_PTLOCKS? I think its good enough. with pgd's we are likely to use the same locks and the split nature may not be really split.
Sorry Balbir, did not get what you asked. Can you please elaborate on this ?