From: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
To: Orgad Shaneh <orgads@gmail.com>
Cc: linux-mips@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, osalvador@suse.de,
stable@vger.kernel.org
Subject: Re: [PATCH 1/2] MIPS: mm: align hugetlb mappings in arch_get_unmapped_area()
Date: Sat, 26 Sep 2026 11:35:58 +0200 [thread overview]
Message-ID: <areR_hMi-gEyUQ-0@alpha.franken.de> (raw)
In-Reply-To: <20260915071329.15125-1-orgads@gmail.com>
On Tue, Sep 15, 2026 at 07:13:24AM +0000, Orgad Shaneh wrote:
> Since hugetlb mappings were made to go through the architecture's
> arch_get_unmapped_area{,_topdown}(), every architecture that implements
> those has to align hugetlb files itself. The generic implementation and
> loongarch do it with huge_page_mask_align(); MIPS was left out.
>
> A non-MAP_FIXED mmap() of a hugetlbfs file therefore returns an address
> that is only SHMLBA aligned, and the kernel then installs 2 MB PMDs for
> a VMA that starts in the middle of a PMD. The consequences on an
> Octeon (CN63XX) board running a process that links libhugetlbfs with
> HUGETLB_ELFMAP=R and HUGETLB_MORECORE=yes, all within a minute of
> start: the neighbouring 4 KB page table is clobbered, the TLB ends up
> with overlapping entries ("Caught Machine Check exception - caused by
> multiple matching entries in the TLB"), process exit trips
> BUG_ON(start & ~huge_page_mask(h)) in __unmap_hugepage_range(), and
> freed pages leak into unrelated kernel structures (oopses in the irq
> maple tree, in pte_offset_map, ...).
>
> Do what loongarch does in commit 3109d5ff484b ("LoongArch: Set hugetlb
> mmap base address aligned with pmd size"): when the file is a hugetlb
> file, use its page mask as the search alignment instead of the cache
> colour mask.
>
> Fixes: 7bd3f1e1a9ae ("mm: make hugetlb mappings go through mm_get_unmapped_area_vmflags")
> Cc: stable@vger.kernel.org # 6.13+
> Assisted-by: Claude:claude-opus-5
> Signed-off-by: Orgad Shaneh <orgads@gmail.com>
> ---
> diff --git a/arch/mips/mm/mmap.c b/arch/mips/mm/mmap.c
> --- a/arch/mips/mm/mmap.c
> +++ b/arch/mips/mm/mmap.c
> @@ -9,6 +9,7 @@
> #include <linux/compiler.h>
> #include <linux/elf-randomize.h>
> #include <linux/errno.h>
> +#include <linux/hugetlb.h>
> #include <linux/mm.h>
> #include <linux/mman.h>
> #include <linux/export.h>
> @@ -72,8 +73,11 @@ static unsigned long arch_get_unmapped_area_common(struct file *filp,
> }
>
> info.length = len;
> - info.align_mask = do_color_align ? (PAGE_MASK & shm_align_mask) : 0;
> info.align_offset = pgoff << PAGE_SHIFT;
> + if (filp && is_file_hugepages(filp))
> + info.align_mask = huge_page_mask_align(filp);
> + else
> + info.align_mask = do_color_align ? (PAGE_MASK & shm_align_mask) : 0;
>
> if (dir == DOWN) {
> info.flags = VM_UNMAPPED_AREA_TOPDOWN;
> --
> 2.47.0
applied to mips-next
Thomas.
--
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea. [ RFC1925, 2.3 ]
prev parent reply other threads:[~2026-09-26 10:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-15 7:13 [PATCH 1/2] MIPS: mm: align hugetlb mappings in arch_get_unmapped_area() Orgad Shaneh
2026-09-15 7:13 ` [PATCH 2/2] MIPS: mm: do not write a huge TLB entry when the probe misses Orgad Shaneh
2026-09-26 9:37 ` Thomas Bogendoerfer
2026-09-26 9:35 ` Thomas Bogendoerfer [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=areR_hMi-gEyUQ-0@alpha.franken.de \
--to=tsbogend@alpha.franken.de \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=orgads@gmail.com \
--cc=osalvador@suse.de \
--cc=stable@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.