[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220901124933.57ccd5f7c8dd8611ab667c3c@linux-foundation.org>
Date: Thu, 1 Sep 2022 12:49:33 -0700
From: Andrew Morton <akpm@...ux-foundation.org>
To: Baolin Wang <baolin.wang@...ux.alibaba.com>
Cc: mike.kravetz@...cle.com, songmuchun@...edance.com,
david@...hat.com, linux-mm@...ck.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v3] mm/hugetlb: fix races when looking up a CONT-PTE/PMD
size hugetlb page
On Thu, 1 Sep 2022 18:41:31 +0800 Baolin Wang <baolin.wang@...ux.alibaba.com> wrote:
> On some architectures (like ARM64), it can support CONT-PTE/PMD size
> hugetlb, which means it can support not only PMD/PUD size hugetlb
> (2M and 1G), but also CONT-PTE/PMD size(64K and 32M) if a 4K page size
> specified.
>
> So when looking up a CONT-PTE size hugetlb page by follow_page(), it
> will use pte_offset_map_lock() to get the pte entry lock for the CONT-PTE
> size hugetlb in follow_page_pte(). However this pte entry lock is incorrect
> for the CONT-PTE size hugetlb, since we should use huge_pte_lock() to
> get the correct lock, which is mm->page_table_lock.
>
> That means the pte entry of the CONT-PTE size hugetlb under current
> pte lock is unstable in follow_page_pte(), we can continue to migrate
> or poison the pte entry of the CONT-PTE size hugetlb, which can cause
> some potential race issues, even though they are under the 'pte lock'.
>
> For example, suppose thread A is trying to look up a CONT-PTE size
> hugetlb page by move_pages() syscall under the lock, however antoher
> thread B can migrate the CONT-PTE hugetlb page at the same time, which
> will cause thread A to get an incorrect page, if thread A also wants to
> do page migration, then data inconsistency error occurs.
>
> Moreover we have the same issue for CONT-PMD size hugetlb in
> follow_huge_pmd().
>
> To fix above issues, rename the follow_huge_pmd() as follow_huge_pmd_pte()
> to handle PMD and PTE level size hugetlb, which uses huge_pte_lock() to
> get the correct pte entry lock to make the pte entry stable.
>
> Cc: <stable@...r.kernel.org>
Are we able to think of a Fixes: for this?
> Mike, please fold this patch into your series. Thanks.
As this is cc:stable I'll be looking to get this into mainline during
this -rc cycle, so it shouldn't be part of a for-next-rc patch series.
Powered by blists - more mailing lists