diff --git a/kernel/trace/trace.c b/kernel/trace/trace.c index e2881fb585ffad581ffa80a455026aa2a979fe54..645b52ede61261a81fc52618c6891d2c6a4e949b 100644 --- a/kernel/trace/trace.c +++ b/kernel/trace/trace.c @@ -750,7 +750,10 @@ int trace_pid_write(struct trace_pid_list *filtered_pids, /* copy the current bits to the new max */ ret = trace_pid_list_first(filtered_pids, &pid); while (!ret) { - trace_pid_list_set(pid_list, pid); + ret = trace_pid_list_set(pid_list, pid); + if (ret < 0) + goto out; + ret = trace_pid_list_next(filtered_pids, pid + 1, &pid); nr_pids++; } @@ -787,6 +790,7 @@ int trace_pid_write(struct trace_pid_list *filtered_pids, trace_parser_clear(&parser); ret = 0; } + out: trace_parser_put(&parser); if (ret < 0) {