From: Steven Rostedt <rostedt@goodmis.org>
To: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
Cc: Masami Hiramatsu <mhiramat@kernel.org>,
Tom Zanussi <zanussi@kernel.org>,
Mathieu Desnoyers <mathieu.desnoyers@efficios.com>,
linux-trace-kernel@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] tracing: hist: keep the entry count when the stats allocation fails
Date: Wed, 9 Sep 2026 15:20:43 -0400 [thread overview]
Message-ID: <20260909152043.6ebc1238@gandalf.local.home> (raw)
In-Reply-To: <20260907060323.480728-1-donggeunyoo.kernel@gmail.com>
On Mon, 7 Sep 2026 15:03:23 +0900
Donggeun Yoo <donggeunyoo.kernel@gmail.com> wrote:
First I want to say thank you for all you fixes you have been sending. The
histogram code needs a lot more love that it has been given ;-)
Note, I've been changing the subject lines of your patches to:
This one:
[PATCH] tracing: Keep the entrty count when the histogram stats allocation fails
And for you other patches:
[PATCH] tracing: Free histogram ...
As histograms are not a separate subsystem and just part of the tracing
subsystem. And all subjects should start with a capital letter.
> print_entries() uses n_entries both as the number of sort entries and as
> its own return value, so the -ENOMEM it stores when the stats allocation
> fails overwrites the count that the cleanup still needs:
>
> n_entries = tracing_map_sort_entries(map, ...);
> if (n_entries < 0)
> return n_entries;
> ...
> if (!stats) {
> n_entries = -ENOMEM;
> goto out;
> }
> ...
> out:
> tracing_map_destroy_sort_entries(sort_entries, n_entries);
>
> tracing_map_destroy_sort_entries() takes an unsigned int and loops up to
> it, so -ENOMEM arrives as 4294967284. It walks an array of at most
> map->max_elts pointers and calls destroy_sort_entry(), which dereferences
> and frees, on whatever lies past the end.
>
> Reading the hist file of a trigger with a .percent value, with that
> allocation forced to fail:
>
> BUG: KASAN: vmalloc-out-of-bounds in tracing_map_destroy_sort_entries+0xa0/0xb0
> Read of size 8 at addr ffffc90000045000 by task init/1
> tracing_map_destroy_sort_entries+0xa0/0xb0
> hist_show+0x6f7/0x1df0
> seq_read_iter+0x2b8/0x1190
> vfs_read+0x176/0xa40
> The buggy address belongs to a 4-page vmalloc region starting at
> ffffc90000041000 allocated at tracing_map_sort_entries+0x5c/0xd50
>
> A few pages further the fault is fatal. The registers at the oops confirm
> the bound: the loop's end pointer less the array start, over the pointer
> size, is 4294967284.
>
> Return the error in a separate variable and leave n_entries holding the
> count, the way tracing_map_sort_entries() does on its own error path.
>
> The stats block is only entered for a value carrying .percent or .graph,
> which __create_val_field() has rejected since v6.3, so this cannot be
> reached in mainline as it stands. It becomes reachable again with
> "tracing: hist: let values keep the percent and graph modifiers", so it
> should be applied first.
>
> Fixes: abaa5258ce5e ("tracing: Add .percent suffix option to histogram values")
> Cc: stable@vger.kernel.org
Please place the Cc stable above the fixes.
I'm not sure who is suggesting that but I'm seeing a lot of patches that do
that. To me, the Cc's (even to stable) should be the first thing in the
footer portion of the change log.
> Signed-off-by: Donggeun Yoo <donggeunyoo.kernel@gmail.com>
> ---
> Reproduced under QEMU x86_64 on 1fc5a74b108f, with the percent/graph patch
> applied so the block is reachable and with the stats allocation forced to
> fail. Before this change the read of the hist file never returns: KASAN
> reports the vmalloc-out-of-bounds quoted above and the kernel then takes a
> fatal page fault. After it the read returns, the histogram prints its
> header with no rows, and KASAN is silent.
>
> Link: https://lore.kernel.org/linux-trace-kernel/20260907052113.430818-1-donggeunyoo.kernel@gmail.com/
Informative links should go above the '---' and be included in the git
commit. In fact, you should always add a reported-by if something informed
you of a fix. I'll be adding to this patch:
Reported-by: sashiko-bot@kernel.org
Closes: https://lore.kernel.org/all/20260907053113.1CED91F00A3A@smtp.kernel.org/
-- Steve
prev parent reply other threads:[~2026-09-09 19:19 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-09-07 6:03 [PATCH] tracing: hist: keep the entry count when the stats allocation fails Donggeun Yoo
2026-09-07 14:46 ` Masami Hiramatsu
2026-09-09 19:20 ` Steven Rostedt [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=20260909152043.6ebc1238@gandalf.local.home \
--to=rostedt@goodmis.org \
--cc=donggeunyoo.kernel@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-trace-kernel@vger.kernel.org \
--cc=mathieu.desnoyers@efficios.com \
--cc=mhiramat@kernel.org \
--cc=zanussi@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 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.