From: Baoquan He <bhe@redhat.com>
To: liuye <liuye@kylinos.cn>
Cc: Uladzislau Rezki <urezki@gmail.com>,
akpm@linux-foundation.org, hch@infradead.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH 1/4] mm/vmalloc: Remove unnecessary size ALIGN in __vmalloc_node_range_noprof
Date: Wed, 5 Mar 2025 18:02:19 +0800 [thread overview]
Message-ID: <Z8ghK22l7USzuBWY@MiWiFi-R3L-srv> (raw)
In-Reply-To: <6701d375-8d7c-4e13-b0db-486a48088446@kylinos.cn>
On 03/05/25 at 09:46am, liuye wrote:
>
> 在 2025/3/4 02:30, Uladzislau Rezki 写道:
> > On Mon, Mar 03, 2025 at 05:44:07PM +0800, Liu Ye wrote:
> >> The same operation already exists in the function __get_vm_area_node,
> >> so delete the duplicate operation to simplify the code.
> >>
> >> Signed-off-by: Liu Ye <liuye@kylinos.cn>
> >> ---
> >> mm/vmalloc.c | 1 -
> >> 1 file changed, 1 deletion(-)
> >>
> >> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> >> index dc658d4af181..20d9b9de84b1 100644
> >> --- a/mm/vmalloc.c
> >> +++ b/mm/vmalloc.c
> >> @@ -3798,7 +3798,6 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> >> shift = arch_vmap_pte_supported_shift(size);
> >>
> >> align = max(real_align, 1UL << shift);
> >> - size = ALIGN(real_size, 1UL << shift);
> >> }
> >>
> >> again:
> >> --
> >> 2.25.1
> >>
> > There is a mess with:
> >
> > unsigned long real_size = size;
> > unsigned long real_align = align;
> >
> > "real_size" and "real_align". Those are useless. What is about:
>
> Sorry, the order of the patches may be misleading.
>
> The correct order is as follows:
>
> PATCH1. mm/vmalloc: Size should be used instead of real_size "
> PATCH2. mm/vmalloc: Remove unnecessary size ALIGN in __vmalloc_node_range_noprof
> PATCH3. mm/vmalloc: Remove the real_size variable to simplify the code "
> PATCH4. mm/vmalloc: Rename the variable real_align to original_align to prevent misunderstanding
>
> If PATCH1 is the correct fix, then consider PATCH2, PATCH3, and PATCH4.
Well, seems the patch split is done too subtly. It's only about the
size/align inside one function, maybe one patch is enough in this case.
My personal opinion.
>
> > diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> > index 5c88d0e90c20..a381ffee1595 100644
> > --- a/mm/vmalloc.c
> > +++ b/mm/vmalloc.c
> > @@ -3771,8 +3771,6 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> > struct vm_struct *area;
> > void *ret;
> > kasan_vmalloc_flags_t kasan_flags = KASAN_VMALLOC_NONE;
> > - unsigned long real_size = size;
> > - unsigned long real_align = align;
> > unsigned int shift = PAGE_SHIFT;
> >
> > if (WARN_ON_ONCE(!size))
> > @@ -3781,7 +3779,7 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> > if ((size >> PAGE_SHIFT) > totalram_pages()) {
> > warn_alloc(gfp_mask, NULL,
> > "vmalloc error: size %lu, exceeds total pages",
> > - real_size);
> > + size);
> > return NULL;
> > }
> >
> > @@ -3798,19 +3796,18 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> > else
> > shift = arch_vmap_pte_supported_shift(size);
> >
> > - align = max(real_align, 1UL << shift);
> > - size = ALIGN(real_size, 1UL << shift);
> > + align = max(align, 1UL << shift);
> > }
> >
> > again:
> > - area = __get_vm_area_node(real_size, align, shift, VM_ALLOC |
> > + area = __get_vm_area_node(size, align, shift, VM_ALLOC |
> > VM_UNINITIALIZED | vm_flags, start, end, node,
> > gfp_mask, caller);
> > if (!area) {
> > bool nofail = gfp_mask & __GFP_NOFAIL;
> > warn_alloc(gfp_mask, NULL,
> > "vmalloc error: size %lu, vm_struct allocation failed%s",
> > - real_size, (nofail) ? ". Retrying." : "");
> > + size, (nofail) ? ". Retrying." : "");
> > if (nofail) {
> > schedule_timeout_uninterruptible(1);
> > goto again;
> > @@ -3860,7 +3857,7 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> > (gfp_mask & __GFP_SKIP_ZERO))
> > kasan_flags |= KASAN_VMALLOC_INIT;
> > /* KASAN_VMALLOC_PROT_NORMAL already set if required. */
> > - area->addr = kasan_unpoison_vmalloc(area->addr, real_size, kasan_flags);
> > + area->addr = kasan_unpoison_vmalloc(area->addr, size, kasan_flags);
> >
> > /*
> > * In this function, newly allocated vm_struct has VM_UNINITIALIZED
> > @@ -3878,8 +3875,6 @@ void *__vmalloc_node_range_noprof(unsigned long size, unsigned long align,
> > fail:
> > if (shift > PAGE_SHIFT) {
> > shift = PAGE_SHIFT;
> > - align = real_align;
> > - size = real_size;
> > goto again;
> > }
> >
> > ?
> >
> > --
> > Uladzislau Rezki
>
next prev parent reply other threads:[~2025-03-05 19:29 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-03 9:44 [PATCH 0/4] Optimize __vmalloc_node_range_noprof function Liu Ye
2025-03-03 9:44 ` [PATCH 1/4] mm/vmalloc: Remove unnecessary size ALIGN in __vmalloc_node_range_noprof Liu Ye
2025-03-03 18:30 ` Uladzislau Rezki
2025-03-05 1:46 ` liuye
2025-03-05 10:02 ` Baoquan He [this message]
2025-03-05 10:06 ` Uladzislau Rezki
2025-03-06 1:32 ` liuye
2025-03-03 9:44 ` [PATCH 2/4] mm/vmalloc: Size should be used instead of real_size " Liu Ye
2025-03-03 9:44 ` [PATCH 3/4] mm/vmalloc: Remove the real_size variable to simplify the code " Liu Ye
2025-03-03 9:44 ` [PATCH 4/4] mm/vmalloc: Rename the variable real_align to original_align to prevent misunderstanding Liu Ye
2025-03-03 16:09 ` [PATCH 0/4] Optimize __vmalloc_node_range_noprof function Uladzislau Rezki
2025-03-04 5:58 ` Dev Jain
2025-03-05 1:33 ` liuye
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=Z8ghK22l7USzuBWY@MiWiFi-R3L-srv \
--to=bhe@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hch@infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=liuye@kylinos.cn \
--cc=urezki@gmail.com \
/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.