From: SeongJae Park <sj@kernel.org>
To: "Guilherme G. Piccoli" <gpiccoli@igalia.com>
Cc: SeongJae Park <sj@kernel.org>,
linux-mm@kvack.org, rppt@kernel.org,
linux-kernel@vger.kernel.org, kernel-dev@igalia.com,
kernel@gpiccoli.net, Andrew Morton <akpm@linux-foundation.org>,
Steven Rostedt <rostedt@goodmis.org>
Subject: Re: [PATCH V2 1/2] mm/memblock: Print out errors on reserve_mem parser
Date: Wed, 4 Mar 2026 17:14:28 -0800 [thread overview]
Message-ID: <20260305011429.79193-1-sj@kernel.org> (raw)
In-Reply-To: <20260304203300.1414286-3-gpiccoli@igalia.com>
On Wed, 4 Mar 2026 17:14:10 -0300 "Guilherme G. Piccoli" <gpiccoli@igalia.com> wrote:
> The parsing of kernel parameter "reserve_mem=" is subject to
> multiple failures, like duplicate naming, malformed expression
> or even lack of available memory. Right now, all of these fail
> silently. Let's add some messages so the kernel log can provide
> useful information in case of failures.
Makes sense to me.
>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: Mike Rapoport <rppt@kernel.org>
> Cc: Steven Rostedt <rostedt@goodmis.org>
> Signed-off-by: Guilherme G. Piccoli <gpiccoli@igalia.com>
Reviewed-by: SeongJae Park <sj@kernel.org>
> ---
>
>
> V2: no changes.
>
> mm/memblock.c | 28 +++++++++++++++++++---------
> 1 file changed, 19 insertions(+), 9 deletions(-)
>
>
> diff --git a/mm/memblock.c b/mm/memblock.c
> index b3ddfdec7a80..2d2646f7a120 100644
> --- a/mm/memblock.c
> +++ b/mm/memblock.c
> @@ -2642,23 +2642,25 @@ static int __init reserve_mem(char *p)
> int len;
>
> if (!p)
> - return -EINVAL;
> + goto err_param;
>
> /* Check if there's room for more reserved memory */
> - if (reserved_mem_count >= RESERVE_MEM_MAX_ENTRIES)
> + if (reserved_mem_count >= RESERVE_MEM_MAX_ENTRIES) {
> + pr_err("reserve_mem: no more room for reserved memory\n");
> return -EBUSY;
> + }
>
> oldp = p;
> size = memparse(p, &p);
> if (!size || p == oldp)
> - return -EINVAL;
> + goto err_param;
>
> if (*p != ':')
> - return -EINVAL;
> + goto err_param;
>
> align = memparse(p+1, &p);
> if (*p != ':')
> - return -EINVAL;
> + goto err_param;
>
> /*
> * memblock_phys_alloc() doesn't like a zero size align,
> @@ -2672,7 +2674,7 @@ static int __init reserve_mem(char *p)
>
> /* name needs to have length but not too big */
> if (!len || len >= RESERVE_MEM_NAME_SIZE)
> - return -EINVAL;
> + goto err_param;
>
> /* Make sure that name has text */
> for (p = name; *p; p++) {
> @@ -2680,11 +2682,13 @@ static int __init reserve_mem(char *p)
> break;
> }
> if (!*p)
> - return -EINVAL;
> + goto err_param;
>
> /* Make sure the name is not already used */
> - if (reserve_mem_find_by_name(name, &start, &tmp))
> + if (reserve_mem_find_by_name(name, &start, &tmp)) {
> + pr_err("reserve_mem: name \"%s\" was already used\n", name);
> return -EBUSY;
> + }
>
> /* Pick previous allocations up from KHO if available */
> if (reserve_mem_kho_revive(name, size, align))
> @@ -2692,12 +2696,18 @@ static int __init reserve_mem(char *p)
>
> /* TODO: Allocation must be outside of scratch region */
> start = memblock_phys_alloc(size, align);
> - if (!start)
> + if (!start) {
> + pr_err("reserve_mem: memblock allocation failed\n");
> return -ENOMEM;
> + }
>
> reserved_mem_add(start, size, name);
>
> return 1;
> +err_param:
> + pr_err("reserve_mem: empty or malformed parameter\n");
> + return -EINVAL;
> +
Nit. Above blank line seems not needed.
> }
> __setup("reserve_mem=", reserve_mem);
>
> --
> 2.50.1
Thanks,
SJ
next prev parent reply other threads:[~2026-03-05 1:14 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 20:14 [PATCH V2 0/2] Small improvements to reserve_mem, take 2 Guilherme G. Piccoli
2026-03-04 20:14 ` [PATCH V2 1/2] mm/memblock: Print out errors on reserve_mem parser Guilherme G. Piccoli
2026-03-05 1:14 ` SeongJae Park [this message]
2026-03-04 20:14 ` [PATCH V2 2/2] mm/memblock: Add reserve_mem debugfs info Guilherme G. Piccoli
2026-03-05 1:44 ` SeongJae Park
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=20260305011429.79193-1-sj@kernel.org \
--to=sj@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=gpiccoli@igalia.com \
--cc=kernel-dev@igalia.com \
--cc=kernel@gpiccoli.net \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=rostedt@goodmis.org \
--cc=rppt@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox