From: xingzhen <zhengjun.x...@intel.com> 3debb0a9ddb adding a "__used" to the variable in the __trace_printk_fmt section. Sometimes it will cause *iter to be NULL, then strcmp in lookup_format and strcpy in hold_module_trace_bprintk_format will panic.
Signed-off-by: xingzhen <zhengjun.x...@intel.com> --- kernel/trace/trace_printk.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/kernel/trace/trace_printk.c b/kernel/trace/trace_printk.c index f96f038..82ecfb5 100644 --- a/kernel/trace/trace_printk.c +++ b/kernel/trace/trace_printk.c @@ -55,6 +55,8 @@ void hold_module_trace_bprintk_format(const char **start, const char **end) mutex_lock(&btrace_mutex); for (iter = start; iter < end; iter++) { + if (!*iter) + goto err; struct trace_bprintk_fmt *tb_fmt = lookup_format(*iter); if (tb_fmt) { *iter = tb_fmt->fmt; @@ -75,6 +77,7 @@ void hold_module_trace_bprintk_format(const char **start, const char **end) *iter = fmt; } +err: mutex_unlock(&btrace_mutex); } -- 1.9.1