diff options
Diffstat (limited to 'kernel/trace')
| -rw-r--r-- | kernel/trace/trace_printk.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/kernel/trace/trace_printk.c b/kernel/trace/trace_printk.c index 1f06468a10d7..6fd4ffd042f9 100644 --- a/kernel/trace/trace_printk.c +++ b/kernel/trace/trace_printk.c | |||
| @@ -59,18 +59,19 @@ void hold_module_trace_bprintk_format(const char **start, const char **end) | |||
| 59 | continue; | 59 | continue; |
| 60 | } | 60 | } |
| 61 | 61 | ||
| 62 | fmt = NULL; | ||
| 62 | tb_fmt = kmalloc(sizeof(*tb_fmt), GFP_KERNEL); | 63 | tb_fmt = kmalloc(sizeof(*tb_fmt), GFP_KERNEL); |
| 63 | if (tb_fmt) | 64 | if (tb_fmt) { |
| 64 | fmt = kmalloc(strlen(*iter) + 1, GFP_KERNEL); | 65 | fmt = kmalloc(strlen(*iter) + 1, GFP_KERNEL); |
| 65 | if (tb_fmt && fmt) { | 66 | if (fmt) { |
| 66 | list_add_tail(&tb_fmt->list, &trace_bprintk_fmt_list); | 67 | list_add_tail(&tb_fmt->list, &trace_bprintk_fmt_list); |
| 67 | strcpy(fmt, *iter); | 68 | strcpy(fmt, *iter); |
| 68 | tb_fmt->fmt = fmt; | 69 | tb_fmt->fmt = fmt; |
| 69 | *iter = tb_fmt->fmt; | 70 | } else |
| 70 | } else { | 71 | kfree(tb_fmt); |
| 71 | kfree(tb_fmt); | ||
| 72 | *iter = NULL; | ||
| 73 | } | 72 | } |
| 73 | *iter = fmt; | ||
| 74 | |||
| 74 | } | 75 | } |
| 75 | mutex_unlock(&btrace_mutex); | 76 | mutex_unlock(&btrace_mutex); |
| 76 | } | 77 | } |
