linux-stable/include
Steven Rostedt (Google) 7ec10a27d6 tracing: Use a copy of the va_list for __assign_vstr()
commit 3a2dcbaf4d upstream.

If an instance of tracing enables the same trace event as another
instance, or the top level instance, or even perf, then the va_list passed
into some tracepoints can be used more than once.

As va_list can only be traversed once, this can cause issues:

 # cat /sys/kernel/tracing/instances/qla2xxx/trace
             cat-56106   [012] ..... 2419873.470098: ql_dbg_log: qla2xxx [0000:05:00.0]-1054:14:  Entered (null).
             cat-56106   [012] ..... 2419873.470101: ql_dbg_log: qla2xxx [0000:05:00.0]-1000:14:  Entered ×+<96>²Ü<98>^H.
             cat-56106   [012] ..... 2419873.470102: ql_dbg_log: qla2xxx [0000:05:00.0]-1006:14:  Prepare to issue mbox cmd=0xde589000.

 # cat /sys/kernel/tracing/trace
             cat-56106   [012] ..... 2419873.470097: ql_dbg_log: qla2xxx [0000:05:00.0]-1054:14:  Entered qla2x00_get_firmware_state.
             cat-56106   [012] ..... 2419873.470100: ql_dbg_log: qla2xxx [0000:05:00.0]-1000:14:  Entered qla2x00_mailbox_command.
             cat-56106   [012] ..... 2419873.470102: ql_dbg_log: qla2xxx [0000:05:00.0]-1006:14:  Prepare to issue mbox cmd=0x69.

The instance version is corrupted because the top level instance iterated
the va_list first.

Use va_copy() in the __assign_vstr() macro to make sure that each trace
event for each use case gets a fresh va_list.

Link: https://lore.kernel.org/all/259d53a5-958e-6508-4e45-74dba2821242@marvell.com/
Link: https://lkml.kernel.org/r/20220719182004.21daa83e@gandalf.local.home

Fixes: 0563231f93 ("tracing/events: Add __vstring() and __assign_vstr() helper macros")
Reported-by: Arun Easi <aeasi@marvell.com>
Signed-off-by: Steven Rostedt (Google) <rostedt@goodmis.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2022-08-17 14:42:34 +02:00
..
acpi ACPI: CPPC: Do not prevent CPPC from working in the future 2022-08-17 14:42:28 +02:00
asm-generic asm-generic: remove a broken and needless ifdef conditional 2022-08-03 12:05:17 +02:00
clocksource
crypto crypto: blake2s - remove shash module 2022-08-17 14:42:20 +02:00
drm drm/scheduler: Don't kill jobs in interrupt context 2022-07-29 17:27:56 +02:00
dt-bindings clk: qcom: gcc-msm8939: Add missing SYSTEM_MM_NOC_BFDCD_CLK_SRC 2022-08-17 14:41:40 +02:00
keys
kunit
kvm
linux tpm: eventlog: Fix section mismatch for DEBUG_SECTION_MISMATCH 2022-08-17 14:42:32 +02:00
math-emu
media media: uapi: HEVC: Change pic_order_cnt definition in v4l2_hevc_dpb_entry 2022-08-17 14:41:06 +02:00
memory memory: renesas-rpc-if: Fix HF/OSPI data transfer in Manual Mode 2022-04-21 17:00:24 +02:00
misc
net 9p: Add client parameter to p9_req_put() 2022-08-17 14:42:06 +02:00
pcmcia
ras
rdma
scsi scsi: iscsi: Fix session removal on shutdown 2022-08-17 14:41:38 +02:00
soc net: dsa: felix: keep reference on entire tc-taprio config 2022-08-17 14:40:58 +02:00
sound ASoC: cs35l41: Fix an out-of-bounds access in otp_packed_element_t 2022-06-09 10:29:55 +02:00
target
trace tracing: Use a copy of the va_list for __assign_vstr() 2022-08-17 14:42:34 +02:00
uapi netfilter: xtables: Bring SPDX identifier back 2022-08-17 14:41:21 +02:00
vdso
video video: of_display_timing.h: include errno.h 2022-07-12 16:42:17 +02:00
xen