From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Tom Zanussi <zanussi@kernel.org>,
Steven Rostedt <rostedt@goodmis.org>,
Sasha Levin <sashal@kernel.org>
Subject: [PATCH AUTOSEL 5.5 23/67] tracing: Fix number printing bug in print_synth_event()
Date: Thu, 5 Mar 2020 12:12:24 -0500 [thread overview]
Message-ID: <20200305171309.29118-23-sashal@kernel.org> (raw)
In-Reply-To: <20200305171309.29118-1-sashal@kernel.org>
From: Tom Zanussi <zanussi@kernel.org>
[ Upstream commit 784bd0847eda032ed2f3522f87250655a18c0190 ]
Fix a varargs-related bug in print_synth_event() which resulted in
strange output and oopses on 32-bit x86 systems. The problem is that
trace_seq_printf() expects the varargs to match the format string, but
print_synth_event() was always passing u64 values regardless. This
results in unspecified behavior when unpacking with va_arg() in
trace_seq_printf().
Add a function that takes the size into account when calling
trace_seq_printf().
Before:
modprobe-1731 [003] .... 919.039758: gen_synth_test: next_pid_field=777(null)next_comm_field=hula hoops ts_ns=1000000 ts_ms=1000 cpu=3(null)my_string_field=thneed my_int_field=598(null)
After:
insmod-1136 [001] .... 36.634590: gen_synth_test: next_pid_field=777 next_comm_field=hula hoops ts_ns=1000000 ts_ms=1000 cpu=1 my_string_field=thneed my_int_field=598
Link: http://lkml.kernel.org/r/a9b59eb515dbbd7d4abe53b347dccf7a8e285657.1581720155.git.zanussi@kernel.org
Reported-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Tom Zanussi <zanussi@kernel.org>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
kernel/trace/trace_events_hist.c | 32 +++++++++++++++++++++++++++++---
1 file changed, 29 insertions(+), 3 deletions(-)
diff --git a/kernel/trace/trace_events_hist.c b/kernel/trace/trace_events_hist.c
index e10585ef00e15..862fb6d16edb8 100644
--- a/kernel/trace/trace_events_hist.c
+++ b/kernel/trace/trace_events_hist.c
@@ -811,6 +811,29 @@ static const char *synth_field_fmt(char *type)
return fmt;
}
+static void print_synth_event_num_val(struct trace_seq *s,
+ char *print_fmt, char *name,
+ int size, u64 val, char *space)
+{
+ switch (size) {
+ case 1:
+ trace_seq_printf(s, print_fmt, name, (u8)val, space);
+ break;
+
+ case 2:
+ trace_seq_printf(s, print_fmt, name, (u16)val, space);
+ break;
+
+ case 4:
+ trace_seq_printf(s, print_fmt, name, (u32)val, space);
+ break;
+
+ default:
+ trace_seq_printf(s, print_fmt, name, val, space);
+ break;
+ }
+}
+
static enum print_line_t print_synth_event(struct trace_iterator *iter,
int flags,
struct trace_event *event)
@@ -849,10 +872,13 @@ static enum print_line_t print_synth_event(struct trace_iterator *iter,
} else {
struct trace_print_flags __flags[] = {
__def_gfpflag_names, {-1, NULL} };
+ char *space = (i == se->n_fields - 1 ? "" : " ");
- trace_seq_printf(s, print_fmt, se->fields[i]->name,
- entry->fields[n_u64],
- i == se->n_fields - 1 ? "" : " ");
+ print_synth_event_num_val(s, print_fmt,
+ se->fields[i]->name,
+ se->fields[i]->size,
+ entry->fields[n_u64],
+ space);
if (strcmp(se->fields[i]->type, "gfp_t") == 0) {
trace_seq_puts(s, " (");
--
2.20.1
next prev parent reply other threads:[~2020-03-05 17:13 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-05 17:12 [PATCH AUTOSEL 5.5 01/67] ACPI: watchdog: Allow disabling WDAT at boot Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 02/67] HID: apple: Add support for recent firmware on Magic Keyboards Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 03/67] HID: core: fix off-by-one memset in hid_report_raw_event() Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 04/67] HID: core: increase HID report buffer size to 8KiB Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 05/67] HID: hiddev: Fix race in in hiddev_disconnect() Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 06/67] HID: alps: Fix an error handling path in 'alps_input_configured()' Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 07/67] i2c: altera: Fix potential integer overflow Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 08/67] ACPI: watchdog: Set default timeout in probe Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 09/67] HID: i2c-hid: add Trekstor Surfbook E11B to descriptor override Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 10/67] mips: vdso: fix 'jalr t9' crash in vdso code Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 11/67] MIPS: Disable VDSO time functionality on microMIPS Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 12/67] mips: vdso: add build time check that no 'jalr t9' calls left Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 13/67] MIPS: cavium_octeon: Fix syncw generation Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 14/67] MIPS: VPE: Fix a double free and a memory leak in 'release_vpe()' Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 15/67] HID: hid-bigbenff: fix general protection fault caused by double kfree Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 16/67] HID: hid-bigbenff: call hid_hw_stop() in case of error Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 17/67] HID: hid-bigbenff: fix race condition for scheduled work during removal Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 18/67] riscv: set pmp configuration if kernel is running in M-mode Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 19/67] RISC-V: Don't enable all interrupts in trap_init() Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 20/67] MIPS: vdso: Wrap -mexplicit-relocs in cc-option Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 21/67] kunit: run kunit_tool from any directory Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 22/67] selftests/rseq: Fix out-of-tree compilation Sasha Levin
2020-03-05 17:12 ` Sasha Levin [this message]
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 24/67] nl80211: fix potential leak in AP start Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 25/67] cfg80211: check reg_rule for NULL in handle_channel_custom() Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 26/67] mac80211: Remove a redundant mutex unlock Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 27/67] scsi: libfc: free response frame from GPN_ID Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 28/67] netfilter: ipset: Fix "INFO: rcu detected stall in hash_xxx" reports Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 29/67] netfilter: ipset: Fix forceadd evaluation path Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 30/67] vhost: Check docket sk_family instead of call getname Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 31/67] net: usb: qmi_wwan: restore mtu min/max values after raw_ip switch Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 32/67] hv_netvsc: Fix unwanted wakeup in netvsc_attach() Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 33/67] net: ks8851-ml: Fix IRQ handling and locking Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 34/67] mac80211: rx: avoid RCU list traversal under mutex Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 35/67] net: ll_temac: Fix race condition causing TX hang Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 36/67] net: ll_temac: Add more error handling of dma_map_single() calls Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 37/67] net: ll_temac: Fix RX buffer descriptor handling on GFP_ATOMIC pressure Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 38/67] net: ll_temac: Handle DMA halt condition caused by buffer underrun Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 39/67] blk-mq: insert passthrough request into hctx->dispatch directly Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 40/67] io_uring: fix poll_list race for SETUP_IOPOLL|SETUP_SQPOLL Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 41/67] drm/amdgpu: fix memory leak during TDR test(v2) Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 42/67] io_uring: pick up link work on submit reference drop Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 43/67] kbuild: fix DT binding schema rule to detect command line changes Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 44/67] kbuild: add dtbs_check to PHONY Sasha Levin
2020-03-05 17:12 ` [PATCH AUTOSEL 5.5 45/67] kbuild: add dt_binding_check to PHONY in a correct place Sasha Levin
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=20200305171309.29118-23-sashal@kernel.org \
--to=sashal@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rostedt@goodmis.org \
--cc=stable@vger.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®