|
@@ -2013,9 +2013,10 @@ enum print_line_t print_trace_line(struct trace_iterator *iter)
|
|
{
|
|
{
|
|
enum print_line_t ret;
|
|
enum print_line_t ret;
|
|
|
|
|
|
- if (iter->lost_events)
|
|
|
|
- trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
|
|
|
|
- iter->cpu, iter->lost_events);
|
|
|
|
|
|
+ if (iter->lost_events &&
|
|
|
|
+ !trace_seq_printf(&iter->seq, "CPU:%d [LOST %lu EVENTS]\n",
|
|
|
|
+ iter->cpu, iter->lost_events))
|
|
|
|
+ return TRACE_TYPE_PARTIAL_LINE;
|
|
|
|
|
|
if (iter->trace && iter->trace->print_line) {
|
|
if (iter->trace && iter->trace->print_line) {
|
|
ret = iter->trace->print_line(iter);
|
|
ret = iter->trace->print_line(iter);
|
|
@@ -3229,6 +3230,14 @@ waitagain:
|
|
|
|
|
|
if (iter->seq.len >= cnt)
|
|
if (iter->seq.len >= cnt)
|
|
break;
|
|
break;
|
|
|
|
+
|
|
|
|
+ /*
|
|
|
|
+ * Setting the full flag means we reached the trace_seq buffer
|
|
|
|
+ * size and we should leave by partial output condition above.
|
|
|
|
+ * One of the trace_seq_* functions is not used properly.
|
|
|
|
+ */
|
|
|
|
+ WARN_ONCE(iter->seq.full, "full flag set for trace type %d",
|
|
|
|
+ iter->ent->type);
|
|
}
|
|
}
|
|
trace_access_unlock(iter->cpu_file);
|
|
trace_access_unlock(iter->cpu_file);
|
|
trace_event_read_unlock();
|
|
trace_event_read_unlock();
|