From 93923f564b381e7a119bf95fc5cfbb9352171a7a Mon Sep 17 00:00:00 2001 From: Peter Zijlstra Date: Mon, 20 Jul 2009 15:27:04 +0200 Subject: [PATCH] --- yaml --- r: 158115 b: refs/heads/master c: 4f84f4330a11b9eb828bf5af557f4c79c64614a3 h: refs/heads/master i: 158113: 8a22e92411db63d27ff30038ee9abfee5f6440d6 158111: aa112efaa31d1d9a4912c32d6084596a7fc25cf1 v: v3 --- [refs] | 2 +- trunk/kernel/lockdep.c | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 728fb8935e11..f1e9a85a9074 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: bbfa26229a8143889e95e0df4a9d69067ee836cd +refs/heads/master: 4f84f4330a11b9eb828bf5af557f4c79c64614a3 diff --git a/trunk/kernel/lockdep.c b/trunk/kernel/lockdep.c index 1cedb00e3e7a..2f0970297e30 100644 --- a/trunk/kernel/lockdep.c +++ b/trunk/kernel/lockdep.c @@ -367,11 +367,21 @@ static int save_trace(struct stack_trace *trace) save_stack_trace(trace); + /* + * Some daft arches put -1 at the end to indicate its a full trace. + * + * 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 + */ + if (trace->entries[trace->nr_entries-1] == ULONG_MAX) + trace->nr_entries--; + trace->max_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()) return 0;