[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <00899fee-4bf9-46de-8a66-45088243bd2f@lucifer.local>
Date: Thu, 24 Oct 2024 17:00:36 +0100
From: Lorenzo Stoakes <lorenzo.stoakes@...cle.com>
To: Vlastimil Babka <vbabka@...e.cz>
Cc: Andrew Morton <akpm@...ux-foundation.org>,
"Liam R. Howlett" <Liam.Howlett@...cle.com>,
Jann Horn <jannh@...gle.com>,
Thorsten Leemhuis <regressions@...mhuis.info>, linux-mm@...ck.org,
linux-kernel@...r.kernel.org, Petr Tesarik <ptesarik@...e.com>,
Michael Matz <matz@...e.de>,
Gabriel Krisman Bertazi <gabriel@...sman.be>,
Matthias Bodenbinder <matthias@...enbinder.de>, stable@...r.kernel.org,
Rik van Riel <riel@...riel.com>,
Yang Shi <yang@...amperecomputing.com>
Subject: Re: [PATCH hotfix 6.12] mm, mmap: limit THP aligment of anonymous
mappings to PMD-aligned sizes
On Thu, Oct 24, 2024 at 04:47:54PM +0100, Lorenzo Stoakes wrote:
[snip]
> > diff --git a/mm/mmap.c b/mm/mmap.c
> > index 9c0fb43064b5..a5297cfb1dfc 100644
> > --- a/mm/mmap.c
> > +++ b/mm/mmap.c
> > @@ -900,7 +900,8 @@ __get_unmapped_area(struct file *file, unsigned long addr, unsigned long len,
> >
> > if (get_area) {
> > addr = get_area(file, addr, len, pgoff, flags);
> > - } else if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)) {
> > + } else if (IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE)
> > + && IS_ALIGNED(len, PMD_SIZE)) {
>
> So doing this feels right but...
>
> Hm this seems like it belongs in __thp_get_unmapped_area() which does a bunch of
> checks up front returning 0 if they fail, which then results in it peforming the
> normal get unmapped area logic.
>
> That also has a bunch of (offset) alignment checks as well overflow checks
> so it would seem the natural place to also check length?
>
OK having said that, I see this function is referenced from a bunch of fs
stuff we probably don't want to potentially break by enforcing this
requirement there (at least in this fix).
So disregard that and since this looks otherwise good to me, feel free to add:
Reviewed-by: Lorenzo Stoakes <lorenzo.stoakes@...cle.com>
> > /* Ensures that larger anonymous mappings are THP aligned. */
> > addr = thp_get_unmapped_area_vmflags(file, addr, len,
> > pgoff, flags, vm_flags);
> > --
> > 2.47.0
> >
Thanks!
Powered by blists - more mailing lists