aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace')
-rw-r--r--kernel/trace/ftrace.c3
-rw-r--r--kernel/trace/trace.c14
-rw-r--r--kernel/trace/trace_events.c2
-rw-r--r--kernel/trace/trace_events_filter.c9
-rw-r--r--kernel/trace/trace_selftest_dynamic.c5
-rw-r--r--kernel/trace/trace_uprobe.c2
6 files changed, 15 insertions, 20 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c
index 554b517c61a0..eac9ce2c57a2 100644
--- a/kernel/trace/ftrace.c
+++ b/kernel/trace/ftrace.c
@@ -4456,7 +4456,6 @@ unregister_ftrace_function_probe_func(char *glob, struct trace_array *tr,
4456 func_g.type = filter_parse_regex(glob, strlen(glob), 4456 func_g.type = filter_parse_regex(glob, strlen(glob),
4457 &func_g.search, &not); 4457 &func_g.search, &not);
4458 func_g.len = strlen(func_g.search); 4458 func_g.len = strlen(func_g.search);
4459 func_g.search = glob;
4460 4459
4461 /* we do not support '!' for function probes */ 4460 /* we do not support '!' for function probes */
4462 if (WARN_ON(not)) 4461 if (WARN_ON(not))
@@ -5015,7 +5014,6 @@ int ftrace_regex_release(struct inode *inode, struct file *file)
5015 5014
5016 parser = &iter->parser; 5015 parser = &iter->parser;
5017 if (trace_parser_loaded(parser)) { 5016 if (trace_parser_loaded(parser)) {
5018 parser->buffer[parser->idx] = 0;
5019 ftrace_match_records(iter->hash, parser->buffer, parser->idx); 5017 ftrace_match_records(iter->hash, parser->buffer, parser->idx);
5020 } 5018 }
5021 5019
@@ -5329,7 +5327,6 @@ ftrace_graph_release(struct inode *inode, struct file *file)
5329 parser = &fgd->parser; 5327 parser = &fgd->parser;
5330 5328
5331 if (trace_parser_loaded((parser))) { 5329 if (trace_parser_loaded((parser))) {
5332 parser->buffer[parser->idx] = 0;
5333 ret = ftrace_graph_set_hash(fgd->new_hash, 5330 ret = ftrace_graph_set_hash(fgd->new_hash,
5334 parser->buffer); 5331 parser->buffer);
5335 } 5332 }
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 32c069bbf41b..56608538a4ad 100644
--- a/kernel/trace/trace.c
+++ b/kernel/trace/trace.c
@@ -530,8 +530,6 @@ int trace_pid_write(struct trace_pid_list *filtered_pids,
530 ubuf += ret; 530 ubuf += ret;
531 cnt -= ret; 531 cnt -= ret;
532 532
533 parser.buffer[parser.idx] = 0;
534
535 ret = -EINVAL; 533 ret = -EINVAL;
536 if (kstrtoul(parser.buffer, 0, &val)) 534 if (kstrtoul(parser.buffer, 0, &val))
537 break; 535 break;
@@ -1236,18 +1234,18 @@ int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
1236 cnt--; 1234 cnt--;
1237 } 1235 }
1238 1236
1237 parser->idx = 0;
1238
1239 /* only spaces were written */ 1239 /* only spaces were written */
1240 if (isspace(ch)) { 1240 if (isspace(ch) || !ch) {
1241 *ppos += read; 1241 *ppos += read;
1242 ret = read; 1242 ret = read;
1243 goto out; 1243 goto out;
1244 } 1244 }
1245
1246 parser->idx = 0;
1247 } 1245 }
1248 1246
1249 /* read the non-space input */ 1247 /* read the non-space input */
1250 while (cnt && !isspace(ch)) { 1248 while (cnt && !isspace(ch) && ch) {
1251 if (parser->idx < parser->size - 1) 1249 if (parser->idx < parser->size - 1)
1252 parser->buffer[parser->idx++] = ch; 1250 parser->buffer[parser->idx++] = ch;
1253 else { 1251 else {
@@ -1262,12 +1260,14 @@ int trace_get_user(struct trace_parser *parser, const char __user *ubuf,
1262 } 1260 }
1263 1261
1264 /* We either got finished input or we have to wait for another call. */ 1262 /* We either got finished input or we have to wait for another call. */
1265 if (isspace(ch)) { 1263 if (isspace(ch) || !ch) {
1266 parser->buffer[parser->idx] = 0; 1264 parser->buffer[parser->idx] = 0;
1267 parser->cont = false; 1265 parser->cont = false;
1268 } else if (parser->idx < parser->size - 1) { 1266 } else if (parser->idx < parser->size - 1) {
1269 parser->cont = true; 1267 parser->cont = true;
1270 parser->buffer[parser->idx++] = ch; 1268 parser->buffer[parser->idx++] = ch;
1269 /* Make sure the parsed string always terminates with '\0'. */
1270 parser->buffer[parser->idx] = 0;
1271 } else { 1271 } else {
1272 ret = -EINVAL; 1272 ret = -EINVAL;
1273 goto out; 1273 goto out;
diff --git a/kernel/trace/trace_events.c b/kernel/trace/trace_events.c
index 1b87157edbff..05c7172c6667 100644
--- a/kernel/trace/trace_events.c
+++ b/kernel/trace/trace_events.c
@@ -885,8 +885,6 @@ ftrace_event_write(struct file *file, const char __user *ubuf,
885 if (*parser.buffer == '!') 885 if (*parser.buffer == '!')
886 set = 0; 886 set = 0;
887 887
888 parser.buffer[parser.idx] = 0;
889
890 ret = ftrace_set_clr_event(tr, parser.buffer + !set, set); 888 ret = ftrace_set_clr_event(tr, parser.buffer + !set, set);
891 if (ret) 889 if (ret)
892 goto out_put; 890 goto out_put;
diff --git a/kernel/trace/trace_events_filter.c b/kernel/trace/trace_events_filter.c
index 61e7f0678d33..a764aec3c9a1 100644
--- a/kernel/trace/trace_events_filter.c
+++ b/kernel/trace/trace_events_filter.c
@@ -400,7 +400,6 @@ enum regex_type filter_parse_regex(char *buff, int len, char **search, int *not)
400 for (i = 0; i < len; i++) { 400 for (i = 0; i < len; i++) {
401 if (buff[i] == '*') { 401 if (buff[i] == '*') {
402 if (!i) { 402 if (!i) {
403 *search = buff + 1;
404 type = MATCH_END_ONLY; 403 type = MATCH_END_ONLY;
405 } else if (i == len - 1) { 404 } else if (i == len - 1) {
406 if (type == MATCH_END_ONLY) 405 if (type == MATCH_END_ONLY)
@@ -410,14 +409,14 @@ enum regex_type filter_parse_regex(char *buff, int len, char **search, int *not)
410 buff[i] = 0; 409 buff[i] = 0;
411 break; 410 break;
412 } else { /* pattern continues, use full glob */ 411 } else { /* pattern continues, use full glob */
413 type = MATCH_GLOB; 412 return MATCH_GLOB;
414 break;
415 } 413 }
416 } else if (strchr("[?\\", buff[i])) { 414 } else if (strchr("[?\\", buff[i])) {
417 type = MATCH_GLOB; 415 return MATCH_GLOB;
418 break;
419 } 416 }
420 } 417 }
418 if (buff[0] == '*')
419 *search = buff + 1;
421 420
422 return type; 421 return type;
423} 422}
diff --git a/kernel/trace/trace_selftest_dynamic.c b/kernel/trace/trace_selftest_dynamic.c
index 8cda06a10d66..c364cf777e1a 100644
--- a/kernel/trace/trace_selftest_dynamic.c
+++ b/kernel/trace/trace_selftest_dynamic.c
@@ -1,13 +1,14 @@
1// SPDX-License-Identifier: GPL-2.0 1// SPDX-License-Identifier: GPL-2.0
2#include <linux/compiler.h>
2#include "trace.h" 3#include "trace.h"
3 4
4int DYN_FTRACE_TEST_NAME(void) 5noinline __noclone int DYN_FTRACE_TEST_NAME(void)
5{ 6{
6 /* used to call mcount */ 7 /* used to call mcount */
7 return 0; 8 return 0;
8} 9}
9 10
10int DYN_FTRACE_TEST_NAME2(void) 11noinline __noclone int DYN_FTRACE_TEST_NAME2(void)
11{ 12{
12 /* used to call mcount */ 13 /* used to call mcount */
13 return 0; 14 return 0;
diff --git a/kernel/trace/trace_uprobe.c b/kernel/trace/trace_uprobe.c
index 40592e7b3568..268029ae1be6 100644
--- a/kernel/trace/trace_uprobe.c
+++ b/kernel/trace/trace_uprobe.c
@@ -608,7 +608,7 @@ static int probes_seq_show(struct seq_file *m, void *v)
608 608
609 /* Don't print "0x (null)" when offset is 0 */ 609 /* Don't print "0x (null)" when offset is 0 */
610 if (tu->offset) { 610 if (tu->offset) {
611 seq_printf(m, "0x%p", (void *)tu->offset); 611 seq_printf(m, "0x%px", (void *)tu->offset);
612 } else { 612 } else {
613 switch (sizeof(void *)) { 613 switch (sizeof(void *)) {
614 case 4: 614 case 4: