diff options
Diffstat (limited to 'kernel/lockdep.c')
| -rw-r--r-- | kernel/lockdep.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/kernel/lockdep.c b/kernel/lockdep.c index 9af56723c096..4f8df01dbe51 100644 --- a/kernel/lockdep.c +++ b/kernel/lockdep.c | |||
| @@ -49,7 +49,7 @@ | |||
| 49 | #include "lockdep_internals.h" | 49 | #include "lockdep_internals.h" |
| 50 | 50 | ||
| 51 | #define CREATE_TRACE_POINTS | 51 | #define CREATE_TRACE_POINTS |
| 52 | #include <trace/events/lockdep.h> | 52 | #include <trace/events/lock.h> |
| 53 | 53 | ||
| 54 | #ifdef CONFIG_PROVE_LOCKING | 54 | #ifdef CONFIG_PROVE_LOCKING |
| 55 | int prove_locking = 1; | 55 | int prove_locking = 1; |
| @@ -168,7 +168,7 @@ static void lock_time_inc(struct lock_time *lt, u64 time) | |||
| 168 | if (time > lt->max) | 168 | if (time > lt->max) |
| 169 | lt->max = time; | 169 | lt->max = time; |
| 170 | 170 | ||
| 171 | if (time < lt->min || !lt->min) | 171 | if (time < lt->min || !lt->nr) |
| 172 | lt->min = time; | 172 | lt->min = time; |
| 173 | 173 | ||
| 174 | lt->total += time; | 174 | lt->total += time; |
| @@ -177,8 +177,15 @@ static void lock_time_inc(struct lock_time *lt, u64 time) | |||
| 177 | 177 | ||
| 178 | static inline void lock_time_add(struct lock_time *src, struct lock_time *dst) | 178 | static inline void lock_time_add(struct lock_time *src, struct lock_time *dst) |
| 179 | { | 179 | { |
| 180 | dst->min += src->min; | 180 | if (!src->nr) |
| 181 | dst->max += src->max; | 181 | return; |
| 182 | |||
| 183 | if (src->max > dst->max) | ||
| 184 | dst->max = src->max; | ||
| 185 | |||
| 186 | if (src->min < dst->min || !dst->nr) | ||
| 187 | dst->min = src->min; | ||
| 188 | |||
| 182 | dst->total += src->total; | 189 | dst->total += src->total; |
| 183 | dst->nr += src->nr; | 190 | dst->nr += src->nr; |
| 184 | } | 191 | } |
| @@ -379,7 +386,8 @@ static int save_trace(struct stack_trace *trace) | |||
| 379 | * complete trace that maxes out the entries provided will be reported | 386 | * complete trace that maxes out the entries provided will be reported |
| 380 | * as incomplete, friggin useless </rant> | 387 | * as incomplete, friggin useless </rant> |
| 381 | */ | 388 | */ |
| 382 | if (trace->entries[trace->nr_entries-1] == ULONG_MAX) | 389 | if (trace->nr_entries != 0 && |
| 390 | trace->entries[trace->nr_entries-1] == ULONG_MAX) | ||
| 383 | trace->nr_entries--; | 391 | trace->nr_entries--; |
| 384 | 392 | ||
| 385 | trace->max_entries = trace->nr_entries; | 393 | trace->max_entries = trace->nr_entries; |
