Pulltracing fixes from Steven Rostedt: - Limit mcount build time sorting to only those archs that we know it works for. - Fix memory leak in error path of histogram setup - Fix and clean up rel_loc array out of bounds issue - tools/rtla documentation fixes - Fix issues with histogram logic * tag 'trace-v5.17-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: tracing: Don't inc err_log entry count if entry allocation fails tracing: Propagate is_signed to expression tracing: Fix smatch warning for do while check in event_hist_trigger_parse() tracing: Fix smatch warning for null glob in event_hist_trigger_parse() tools/tracing: Update Makefile to build rtla rtla: Make doc build optional tracing/perf: Avoid -Warray-bounds warning for __rel_loc macro tracing: Avoid -Warray-bounds warning for __rel_loc macro tracing/histogram: Fix a potential memory leak for kstrdup() ftrace: Have architectures opt-in for mcount build time sorting
Showing the changes to kernel (3 of 10 files). Show all
Unified · Split
| @@ -70,10 +70,16 @@ config HAVE_C_RECORDMCOUNT · 69 unmodified lines | ||
| 70 | 70 | help |
| 71 | 71 | C version of recordmcount available? |
| 72 | 72 | |
| 73 | +config HAVE_BUILDTIME_MCOUNT_SORT | |
| 74 | + bool | |
| 75 | + help | |
| 76 | + An architecture selects this if it sorts the mcount_loc section | |
| 77 | + at build time. | |
| 78 | + | |
| 73 | 79 | config BUILDTIME_MCOUNT_SORT |
| 74 | 80 | bool |
| 75 | 81 | default y |
| 76 | − depends on BUILDTIME_TABLE_SORT && !S390 | |
| 82 | + depends on HAVE_BUILDTIME_MCOUNT_SORT && DYNAMIC_FTRACE | |
| 77 | 83 | help |
| 78 | 84 | Sort the mcount_loc section at build time. |
| 79 | 85 | |
| @@ -7740,7 +7740,8 @@ static struct tracing_log_err *get_tracing_log_err(struct trace_array *tr) · 7739 unmodified lines | ||
| 7740 | 7740 | err = kzalloc(sizeof(*err), GFP_KERNEL); |
| 7741 | 7741 | if (!err) |
| 7742 | 7742 | err = ERR_PTR(-ENOMEM); |
| 7743 | − tr->n_err_log_entries++; | |
| 7743 | + else | |
| 7744 | + tr->n_err_log_entries++; | |
| 7744 | 7745 | |
| 7745 | 7746 | return err; |
| 7746 | 7747 | } |
| @@ -2503,6 +2503,8 @@ static struct hist_field *parse_unary(struct hist_trigger_data *hist_data, · 2502 unmodified lines | ||
| 2503 | 2503 | (HIST_FIELD_FL_TIMESTAMP | HIST_FIELD_FL_TIMESTAMP_USECS); |
| 2504 | 2504 | expr->fn = hist_field_unary_minus; |
| 2505 | 2505 | expr->operands[0] = operand1; |
| 2506 | + expr->size = operand1->size; | |
| 2507 | + expr->is_signed = operand1->is_signed; | |
| 2506 | 2508 | expr->operator = FIELD_OP_UNARY_MINUS; |
| 2507 | 2509 | expr->name = expr_str(expr, 0); |
| 2508 | 2510 | expr->type = kstrdup_const(operand1->type, GFP_KERNEL); |
| @@ -2719,6 +2721,7 @@ static struct hist_field *parse_expr(struct hist_trigger_data *hist_data, · 210 unmodified lines | ||
| 2719 | 2721 | |
| 2720 | 2722 | /* The operand sizes should be the same, so just pick one */ |
| 2721 | 2723 | expr->size = operand1->size; |
| 2724 | + expr->is_signed = operand1->is_signed; | |
| 2722 | 2725 | |
| 2723 | 2726 | expr->operator = field_op; |
| 2724 | 2727 | expr->type = kstrdup_const(operand1->type, GFP_KERNEL); |
| @@ -3935,6 +3938,7 @@ static int trace_action_create(struct hist_trigger_data *hist_data, · 1210 unmodified lines | ||
| 3935 | 3938 | |
| 3936 | 3939 | var_ref_idx = find_var_ref_idx(hist_data, var_ref); |
| 3937 | 3940 | if (WARN_ON(var_ref_idx < 0)) { |
| 3941 | + kfree(p); | |
| 3938 | 3942 | ret = var_ref_idx; |
| 3939 | 3943 | goto err; |
| 3940 | 3944 | } |
| @@ -6163,7 +6167,9 @@ static int event_hist_trigger_parse(struct event_command *cmd_ops, · 2222 unmodified lines | ||
| 6163 | 6167 | |
| 6164 | 6168 | lockdep_assert_held(&event_mutex); |
| 6165 | 6169 | |
| 6166 | − if (glob && strlen(glob)) { | |
| 6170 | + WARN_ON(!glob); | |
| 6171 | + | |
| 6172 | + if (strlen(glob)) { | |
| 6167 | 6173 | hist_err_clear(); |
| 6168 | 6174 | last_cmd_set(file, param); |
| 6169 | 6175 | } |
| @@ -6196,7 +6202,7 @@ static int event_hist_trigger_parse(struct event_command *cmd_ops, · 26 unmodified lines | ||
| 6196 | 6202 | continue; |
| 6197 | 6203 | } |
| 6198 | 6204 | break; |
| 6199 | − } while (p); | |
| 6205 | + } while (1); | |
| 6200 | 6206 | |
| 6201 | 6207 | if (!p) |
| 6202 | 6208 | param = NULL; |