aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/trace/trace.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/trace/trace.c')
-rw-r--r--kernel/trace/trace.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c
index 4f3a8e24b426..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;
@@ -5616,7 +5616,7 @@ static int tracing_release_pipe(struct inode *inode, struct file *file)
5616 return 0; 5616 return 0;
5617} 5617}
5618 5618
5619static unsigned int 5619static __poll_t
5620trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_table) 5620trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_table)
5621{ 5621{
5622 struct trace_array *tr = iter->tr; 5622 struct trace_array *tr = iter->tr;
@@ -5635,7 +5635,7 @@ trace_poll(struct trace_iterator *iter, struct file *filp, poll_table *poll_tabl
5635 filp, poll_table); 5635 filp, poll_table);
5636} 5636}
5637 5637
5638static unsigned int 5638static __poll_t
5639tracing_poll_pipe(struct file *filp, poll_table *poll_table) 5639tracing_poll_pipe(struct file *filp, poll_table *poll_table)
5640{ 5640{
5641 struct trace_iterator *iter = filp->private_data; 5641 struct trace_iterator *iter = filp->private_data;
@@ -6589,7 +6589,7 @@ static int tracing_buffers_open(struct inode *inode, struct file *filp)
6589 return ret; 6589 return ret;
6590} 6590}
6591 6591
6592static unsigned int 6592static __poll_t
6593tracing_buffers_poll(struct file *filp, poll_table *poll_table) 6593tracing_buffers_poll(struct file *filp, poll_table *poll_table)
6594{ 6594{
6595 struct ftrace_buffer_info *info = filp->private_data; 6595 struct ftrace_buffer_info *info = filp->private_data;