diff options
| author | Changbin Du <changbin.du@intel.com> | 2018-01-16 17:02:30 +0800 | 
|---|---|---|
| committer | Steven Rostedt (VMware) <rostedt@goodmis.org> | 2018-01-23 15:57:28 -0500 | 
| commit | f4d0706cde27f29ff89e6bf94ded4113f8fe6e80 (patch) | |
| tree | 5cd8ddafa8948c8f64fb52c88d61f85d2d773cb7 | |
| parent | 76638d96502744b0d593f2386b75ae5a017c13bb (diff) | |
tracing: Make sure the parsed string always terminates with '\0'
Always mark the parsed string with a terminated nul '\0' character. This removes
the need for the users to have to append the '\0' before using the parsed string.
Link: http://lkml.kernel.org/r/1516093350-12045-4-git-send-email-changbin.du@intel.com
Acked-by: Namhyung Kim <namhyung@kernel.org>
Signed-off-by: Changbin Du <changbin.du@intel.com>
Signed-off-by: Steven Rostedt (VMware) <rostedt@goodmis.org>
| -rw-r--r-- | kernel/trace/ftrace.c | 2 | ||||
| -rw-r--r-- | kernel/trace/trace.c | 4 | ||||
| -rw-r--r-- | kernel/trace/trace_events.c | 2 | 
3 files changed, 2 insertions, 6 deletions
diff --git a/kernel/trace/ftrace.c b/kernel/trace/ftrace.c index 554b517c61a0..dabd9d167d42 100644 --- a/kernel/trace/ftrace.c +++ b/kernel/trace/ftrace.c @@ -5015,7 +5015,6 @@ int ftrace_regex_release(struct inode *inode, struct file *file)  	parser = &iter->parser;  	if (trace_parser_loaded(parser)) { -		parser->buffer[parser->idx] = 0;  		ftrace_match_records(iter->hash, parser->buffer, parser->idx);  	} @@ -5329,7 +5328,6 @@ ftrace_graph_release(struct inode *inode, struct file *file)  		parser = &fgd->parser;  		if (trace_parser_loaded((parser))) { -			parser->buffer[parser->idx] = 0;  			ret = ftrace_graph_set_hash(fgd->new_hash,  						    parser->buffer);  		} diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index cb90435e63da..58de825df19c 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,  		ubuf += ret;  		cnt -= ret; -		parser.buffer[parser.idx] = 0; -  		ret = -EINVAL;  		if (kstrtoul(parser.buffer, 0, &val))  			break; @@ -1268,6 +1266,8 @@ int trace_get_user(struct trace_parser *parser, const char __user *ubuf,  	} else if (parser->idx < parser->size - 1) {  		parser->cont = true;  		parser->buffer[parser->idx++] = ch; +		/* Make sure the parsed string always terminates with '\0'. */ +		parser->buffer[parser->idx] = 0;  	} else {  		ret = -EINVAL;  		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,  		if (*parser.buffer == '!')  			set = 0; -		parser.buffer[parser.idx] = 0; -  		ret = ftrace_set_clr_event(tr, parser.buffer + !set, set);  		if (ret)  			goto out_put;  | 
