|
@@ -367,11 +367,21 @@ static int save_trace(struct stack_trace *trace)
|
|
|
|
|
|
save_stack_trace(trace);
|
|
save_stack_trace(trace);
|
|
|
|
|
|
|
|
+ /*
|
|
|
|
+ * Some daft arches put -1 at the end to indicate its a full trace.
|
|
|
|
+ *
|
|
|
|
+ * <rant> this is buggy anyway, since it takes a whole extra entry so a
|
|
|
|
+ * complete trace that maxes out the entries provided will be reported
|
|
|
|
+ * as incomplete, friggin useless </rant>
|
|
|
|
+ */
|
|
|
|
+ if (trace->entries[trace->nr_entries-1] == ULONG_MAX)
|
|
|
|
+ trace->nr_entries--;
|
|
|
|
+
|
|
trace->max_entries = trace->nr_entries;
|
|
trace->max_entries = trace->nr_entries;
|
|
|
|
|
|
nr_stack_trace_entries += trace->nr_entries;
|
|
nr_stack_trace_entries += trace->nr_entries;
|
|
|
|
|
|
- if (nr_stack_trace_entries == MAX_STACK_TRACE_ENTRIES) {
|
|
|
|
|
|
+ if (nr_stack_trace_entries >= MAX_STACK_TRACE_ENTRIES-1) {
|
|
if (!debug_locks_off_graph_unlock())
|
|
if (!debug_locks_off_graph_unlock())
|
|
return 0;
|
|
return 0;
|
|
|
|
|