diff options
| -rw-r--r-- | kernel/lockdep.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 1cedb00e3e7a..2f0970297e30 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -367,11 +367,21 @@ static int save_trace(struct stack_trace *trace) | |||
| 367 | 367 | ||
| 368 | save_stack_trace(trace); | 368 | save_stack_trace(trace); |
| 369 | 369 | ||
| 370 | /* | ||
| 371 | * Some daft arches put -1 at the end to indicate its a full trace. | ||
| 372 | * | ||
| 373 | * <rant> this is buggy anyway, since it takes a whole extra entry so a | ||
| 374 | * complete trace that maxes out the entries provided will be reported | ||
| 375 | * as incomplete, friggin useless </rant> | ||
| 376 | */ | ||
| 377 | if (trace->entries[trace->nr_entries-1] == ULONG_MAX) | ||
| 378 | trace->nr_entries--; | ||
| 379 | |||
| 370 | trace->max_entries = trace->nr_entries; | 380 | trace->max_entries = trace->nr_entries; |
| 371 | 381 | ||
| 372 | nr_stack_trace_entries += trace->nr_entries; | 382 | nr_stack_trace_entries += trace->nr_entries; |
| 373 | 383 | ||
| 374 | if (nr_stack_trace_entries == MAX_STACK_TRACE_ENTRIES) { | 384 | if (nr_stack_trace_entries >= MAX_STACK_TRACE_ENTRIES-1) { |
| 375 | if (!debug_locks_off_graph_unlock()) | 385 | if (!debug_locks_off_graph_unlock()) |
| 376 | return 0; | 386 | return 0; |
| 377 | 387 | ||
