Re: [PATCH] mm: hugetlb: Add missing cache flushing in hugetlb_unshare_all_pmds()

From: Baolin Wang
Date: Sun Apr 24 2022 - 06:03:03 EST




On 4/24/2022 3:45 PM, Muchun Song wrote:
On Sun, Apr 24, 2022 at 02:33:19PM +0800, Baolin Wang wrote:
Missed calling flush_cache_range() before removing the sharing PMD entrires,
otherwise data consistence issue may be occurred on some architectures whose
caches are strict and require a virtual–>physical translation to exist for
a virtual address. Thus add it.

Fixes: 6dfeaff93be1 ("hugetlb/userfaultfd: unshare all pmds for hugetlbfs when register wp")
Signed-off-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>

CONFIG_ARCH_WANT_HUGE_PMD_SHARE is only definded on riscv, arm64 and
x86. All of them do not have a VIVT cache. In others words,
flush_cache_range() is null on those architectures. So I suspect
in practice this does not cause any issue. It is better to
clarify this in commit log.

Yes, just from code inspection and to keep same behaviors when unmapping sharing PMD entrires in case more architectures can support CONFIG_ARCH_WANT_HUGE_PMD_SHARE in future. Will update the commit message in next version.


Anyway:

Reviewed-by: Muchun Song <songmuchun@xxxxxxxxxxxxx>

Thanks.