Message ID | 20241202064407.53807-1-anshuman.khandual@arm.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | arm64/mm: Ensure adequate HUGE_MAX_HSTATE | expand |
On 02/12/2024 06:44, Anshuman Khandual wrote: > This asserts that HUGE_MAX_HSTATE is sufficient enough preventing potential > hugetlb_max_hstate runtime overflow in hugetlb_add_hstate() thus triggering > a BUG_ON() there after. > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Ard Biesheuvel <ardb@kernel.org> > Cc: Ryan Roberts <ryan.roberts@arm.com> > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > This patch applies on v6.13-rc1 > > arch/arm64/mm/hugetlbpage.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c > index 3215adf48a1b..98a2a0e64e25 100644 > --- a/arch/arm64/mm/hugetlbpage.c > +++ b/arch/arm64/mm/hugetlbpage.c > @@ -519,6 +519,18 @@ pte_t huge_ptep_clear_flush(struct vm_area_struct *vma, > > static int __init hugetlbpage_init(void) > { > + /* > + * HugeTLB pages are supported on maximum four page table > + * levels (PUD, CONT PMD, PMD, CONT PTE) for a given base > + * page size, corresponding to hugetlb_add_hstate() calls > + * here. > + * > + * HUGE_MAX_HSTATE should at least match maximum supported > + * HugeTLB page sizes on the platform. Any new addition to > + * supported HugeTLB page sizes will also require changing > + * HUGE_MAX_HSTATE as well. > + */ > + BUILD_BUG_ON(HUGE_MAX_HSTATE < 4); I guess we only technically need 3 if pud_sect_supported() == false ? Although for simplicity (and to reduce my rebasing effort for boot-time page size :) ), agree we should always just compare to 4. Reviewed-by: Ryan Roberts <ryan.roberts@arm.com> > if (pud_sect_supported()) > hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT); >
On 12/2/24 4:44 PM, Anshuman Khandual wrote: > This asserts that HUGE_MAX_HSTATE is sufficient enough preventing potential > hugetlb_max_hstate runtime overflow in hugetlb_add_hstate() thus triggering > a BUG_ON() there after. > > Cc: Catalin Marinas <catalin.marinas@arm.com> > Cc: Will Deacon <will@kernel.org> > Cc: Ard Biesheuvel <ardb@kernel.org> > Cc: Ryan Roberts <ryan.roberts@arm.com> > Cc: Mark Rutland <mark.rutland@arm.com> > Cc: linux-arm-kernel@lists.infradead.org > Cc: linux-kernel@vger.kernel.org > Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> > --- > This patch applies on v6.13-rc1 > > arch/arm64/mm/hugetlbpage.c | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > Reviewed-by: Gavin Shan <gshan@redhat.com>
On Mon, 02 Dec 2024 12:14:07 +0530, Anshuman Khandual wrote: > This asserts that HUGE_MAX_HSTATE is sufficient enough preventing potential > hugetlb_max_hstate runtime overflow in hugetlb_add_hstate() thus triggering > a BUG_ON() there after. > > Applied to arm64 (for-next/misc), thanks! [1/1] arm64/mm: Ensure adequate HUGE_MAX_HSTATE https://git.kernel.org/arm64/c/1e5823c8e86d Cheers,
diff --git a/arch/arm64/mm/hugetlbpage.c b/arch/arm64/mm/hugetlbpage.c index 3215adf48a1b..98a2a0e64e25 100644 --- a/arch/arm64/mm/hugetlbpage.c +++ b/arch/arm64/mm/hugetlbpage.c @@ -519,6 +519,18 @@ pte_t huge_ptep_clear_flush(struct vm_area_struct *vma, static int __init hugetlbpage_init(void) { + /* + * HugeTLB pages are supported on maximum four page table + * levels (PUD, CONT PMD, PMD, CONT PTE) for a given base + * page size, corresponding to hugetlb_add_hstate() calls + * here. + * + * HUGE_MAX_HSTATE should at least match maximum supported + * HugeTLB page sizes on the platform. Any new addition to + * supported HugeTLB page sizes will also require changing + * HUGE_MAX_HSTATE as well. + */ + BUILD_BUG_ON(HUGE_MAX_HSTATE < 4); if (pud_sect_supported()) hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
This asserts that HUGE_MAX_HSTATE is sufficient enough preventing potential hugetlb_max_hstate runtime overflow in hugetlb_add_hstate() thus triggering a BUG_ON() there after. Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will@kernel.org> Cc: Ard Biesheuvel <ardb@kernel.org> Cc: Ryan Roberts <ryan.roberts@arm.com> Cc: Mark Rutland <mark.rutland@arm.com> Cc: linux-arm-kernel@lists.infradead.org Cc: linux-kernel@vger.kernel.org Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com> --- This patch applies on v6.13-rc1 arch/arm64/mm/hugetlbpage.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)