From: Masami Hiramatsu <mhiramat@kernel.org>
To: Steven Rostedt <rostedt@goodmis.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Beau Belgrave <beaub@linux.microsoft.com>,
Anders Roxell <anders.roxell@linaro.org>,
Masami Hiramatsu <mhiramat@kernel.org>,
Linux Trace Devel <linux-trace-devel@vger.kernel.org>
Subject: Re: [PATCH] tracing/user_events: Use alloc_pages instead of kzalloc() for register pages
Date: Sat, 12 Mar 2022 11:10:04 +0900 [thread overview]
Message-ID: <20220312111004.a199b41e036fe79da05b84f6@kernel.org> (raw)
In-Reply-To: <20220311190457.0345eeb2@gandalf.local.home>
On Fri, 11 Mar 2022 19:04:57 -0500
Steven Rostedt <rostedt@goodmis.org> wrote:
> From: "Steven Rostedt (Google)" <rostedt@goodmis.org>
>
> kzalloc virtual addresses do not work with SetPageReserved, use the actual
> page virtual addresses instead via alloc_pages.
Indeed. kzalloc allocates a slab object, we need a page.
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Thank you,
>
> The issue is reported when booting with user_events and
> DEBUG_VM_PGFLAGS=y.
>
> Also make the number of events based on the ORDER.
>
> Link: https://lore.kernel.org/all/CADYN=9+xY5Vku3Ws5E9S60SM5dCFfeGeRBkmDFbcxX0ZMoFing@mail.gmail.com/
> Link: https://lore.kernel.org/all/20220311223028.1865-1-beaub@linux.microsoft.com/
>
> Cc: Beau Belgrave <beaub@linux.microsoft.com>
> Reported-by: Anders Roxell <anders.roxell@linaro.org>
> Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
> ---
> kernel/trace/trace_events_user.c | 14 ++++++++------
> 1 file changed, 8 insertions(+), 6 deletions(-)
>
> diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c
> index 4febc1d6ae72..e10ad057e797 100644
> --- a/kernel/trace/trace_events_user.c
> +++ b/kernel/trace/trace_events_user.c
> @@ -30,9 +30,10 @@
>
> /*
> * Limits how many trace_event calls user processes can create:
> - * Must be multiple of PAGE_SIZE.
> + * Must be a power of two of PAGE_SIZE.
> */
> -#define MAX_PAGES 1
> +#define MAX_PAGE_ORDER 0
> +#define MAX_PAGES (1 << MAX_PAGE_ORDER)
> #define MAX_EVENTS (MAX_PAGES * PAGE_SIZE)
>
> /* Limit how long of an event name plus args within the subsystem. */
> @@ -1622,16 +1623,17 @@ static void set_page_reservations(bool set)
>
> static int __init trace_events_user_init(void)
> {
> + struct page *pages;
> int ret;
>
> /* Zero all bits beside 0 (which is reserved for failures) */
> bitmap_zero(page_bitmap, MAX_EVENTS);
> set_bit(0, page_bitmap);
>
> - register_page_data = kzalloc(MAX_EVENTS, GFP_KERNEL);
> -
> - if (!register_page_data)
> + pages = alloc_pages(GFP_KERNEL | __GFP_ZERO, MAX_PAGE_ORDER);
> + if (!pages)
> return -ENOMEM;
> + register_page_data = page_address(pages);
>
> set_page_reservations(true);
>
> @@ -1640,7 +1642,7 @@ static int __init trace_events_user_init(void)
> if (ret) {
> pr_warn("user_events could not register with tracefs\n");
> set_page_reservations(false);
> - kfree(register_page_data);
> + __free_pages(pages, MAX_PAGE_ORDER);
> return ret;
> }
>
> --
> 2.34.1
>
--
Masami Hiramatsu <mhiramat@kernel.org>
prev parent reply other threads:[~2022-03-12 2:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-12 0:04 [PATCH] tracing/user_events: Use alloc_pages instead of kzalloc() for register pages Steven Rostedt
2022-03-12 2:10 ` Masami Hiramatsu [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=20220312111004.a199b41e036fe79da05b84f6@kernel.org \
--to=mhiramat@kernel.org \
--cc=anders.roxell@linaro.org \
--cc=beaub@linux.microsoft.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-devel@vger.kernel.org \
--cc=rostedt@goodmis.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.