Message ID | 20201125225654.1618966-1-minchan@kernel.org |
---|---|
State | Accepted |
Commit | 8fa655a3a0013a0c2a2aada6f39a93ee6fc25549 |
Headers | show |
Series | tracing: Fix align of static buffer | expand |
On Wed, Nov 25, 2020 at 02:56:54PM -0800, Minchan Kim wrote: > With 5.9 kernel on ARM64, I found ftrace_dump output was broken but > it had no problem with normal output "cat /sys/kernel/debug/tracing/trace". > > With investigation, it seems coping the data into temporal buffer seems to > break the align binary printf expects if the static buffer is not aligned > with 4-byte. IIUC, get_arg in bstr_printf expects that args has already > right align to be decoded and seq_buf_bprintf says ``the arguments are saved > in a 32bit word array that is defined by the format string constraints``. > So if we don't keep the align under copy to temporal buffer, the output > will be broken by shifting some bytes. > > This patch fixes it. Does this resolve the issue reported at: https://lore.kernel.org/r/20201124223917.795844-1-elavila@google.com ? thanks, greg k-h
Hi Minchan,
Feel free to add my:
Tested-by: Youngmin Nam <youngmin.nam@samsung.com>
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index 6a282bbc7e7f..01bfcc345d55 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -3534,7 +3534,7 @@ __find_next_entry(struct trace_iterator *iter, int *ent_cpu, } #define STATIC_TEMP_BUF_SIZE 128 -static char static_temp_buf[STATIC_TEMP_BUF_SIZE]; +static char static_temp_buf[STATIC_TEMP_BUF_SIZE] __aligned(4); /* Find the next real entry, without updating the iterator itself */ struct trace_entry *trace_find_next_entry(struct trace_iterator *iter,