From: Uladzislau Rezki <urezki@gmail.com>
To: shivamkalra98@zohomail.in
Cc: Andrew Morton <akpm@linux-foundation.org>,
Uladzislau Rezki <urezki@gmail.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Alice Ryhl <aliceryhl@google.com>,
Danilo Krummrich <dakr@kernel.org>
Subject: Re: [PATCH v12 2/5] mm/vmalloc: use physical page count for vrealloc() grow-in-place check
Date: Wed, 6 May 2026 20:47:24 +0200 [thread overview]
Message-ID: <afuMvOTfj977Bex5@pc636> (raw)
In-Reply-To: <20260428-vmalloc-shrink-v12-2-3c18c9172eb1@zohomail.in>
On Tue, Apr 28, 2026 at 01:54:17AM +0530, Shivam Kalra via B4 Relay wrote:
> From: Shivam Kalra <shivamkalra98@zohomail.in>
>
> Update the grow-in-place check in vrealloc() to compare the requested size
> against the actual physical page count (vm->nr_pages) rather than the
> virtual area size (alloced_size, derived from get_vm_area_size()).
>
> Currently both values are equivalent, but the upcoming vrealloc() shrink
> functionality will free pages without reducing the virtual reservation
> size. After such a shrink, the old alloced_size-based comparison would
> incorrectly allow a grow-in-place operation to succeed and attempt to
> access freed pages. Switch to vm->nr_pages now so the check remains
> correct once shrink support is added.
>
> Signed-off-by: Shivam Kalra <shivamkalra98@zohomail.in>
> ---
> mm/vmalloc.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/mm/vmalloc.c b/mm/vmalloc.c
> index 1073abb6094e..9cb3e287a1e8 100644
> --- a/mm/vmalloc.c
> +++ b/mm/vmalloc.c
> @@ -4338,6 +4338,12 @@ void *vrealloc_node_align_noprof(const void *p, size_t size, unsigned long align
> if (unlikely(flags & __GFP_THISNODE) && nid != NUMA_NO_NODE &&
> nid != page_to_nid(vmalloc_to_page(p)))
> goto need_realloc;
> + } else {
> + /*
> + * If p is NULL, vrealloc behaves exactly like vmalloc.
> + * Skip the shrink and in-place grow paths.
> + */
> + goto need_realloc;
> }
>
> /*
> @@ -4356,7 +4362,7 @@ void *vrealloc_node_align_noprof(const void *p, size_t size, unsigned long align
> /*
> * We already have the bytes available in the allocation; use them.
> */
> - if (size <= alloced_size) {
> + if (size <= vm->nr_pages << PAGE_SHIFT) {
> /*
>
Maybe we should consider Fujunjie approach and borrow his idea to shrink VA also?
In that case, we do not need to switch to vm->nr_pages? And we do not
need
[PATCH v12 3/5] mm/vmalloc: use physical page count in vread_iter()
?
--
Uladzislau Rezki
next prev parent reply other threads:[~2026-05-06 18:47 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-27 20:24 [PATCH v12 0/5] mm/vmalloc: free unused pages on vrealloc() shrink Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-04-27 20:24 ` [PATCH v12 1/5] mm/vmalloc: extract vm_area_free_pages() helper from vfree() Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-05-06 18:32 ` Uladzislau Rezki
2026-04-27 20:24 ` [PATCH v12 2/5] mm/vmalloc: use physical page count for vrealloc() grow-in-place check Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-05-06 18:47 ` Uladzislau Rezki [this message]
2026-05-06 19:43 ` Shivam Kalra
2026-05-07 17:21 ` Uladzislau Rezki
2026-05-07 19:06 ` Shivam Kalra
2026-05-08 15:27 ` Uladzislau Rezki
2026-04-27 20:24 ` [PATCH v12 3/5] mm/vmalloc: use physical page count in vread_iter() Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-05-06 18:28 ` Uladzislau Rezki
2026-04-27 20:24 ` [PATCH v12 4/5] mm/vmalloc: free unused pages on vrealloc() shrink Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-05-06 18:27 ` Uladzislau Rezki
2026-04-27 20:24 ` [PATCH v12 5/5] lib/test_vmalloc: add vrealloc test case Shivam Kalra
2026-04-27 20:24 ` Shivam Kalra via B4 Relay
2026-05-05 15:42 ` [PATCH v12 0/5] mm/vmalloc: free unused pages on vrealloc() shrink Shivam Kalra
2026-05-09 0:27 ` Andrew Morton
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=afuMvOTfj977Bex5@pc636 \
--to=urezki@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=aliceryhl@google.com \
--cc=dakr@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=shivamkalra98@zohomail.in \
/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.