diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-11 13:16:05 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2017-02-11 13:16:05 -0500 |
commit | 4e4f74a7eebbc52eaa1dc3c0be6b3c68c0875b09 (patch) | |
tree | 18c2ea553d01596dcd309835d476ec745c9138db | |
parent | 21a7061c5ec300a8a12a0d6468eb7094e9c54a32 (diff) | |
parent | bfeda41d06d85ad9d52f2413cfc2b77be5022f75 (diff) |
Merge branch 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull lockdep fix from Ingo Molnar:
"This fixes an ugly lockdep stack trace output regression. (But also
affects other stacktrace users such as kmemleak, KASAN, etc)"
* 'locking-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
stacktrace, lockdep: Fix address, newline ugliness
-rw-r--r-- | kernel/stacktrace.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/kernel/stacktrace.c b/kernel/stacktrace.c index b6e4c16377c7..9c15a9124e83 100644 --- a/kernel/stacktrace.c +++ b/kernel/stacktrace.c | |||
@@ -18,10 +18,8 @@ void print_stack_trace(struct stack_trace *trace, int spaces) | |||
18 | if (WARN_ON(!trace->entries)) | 18 | if (WARN_ON(!trace->entries)) |
19 | return; | 19 | return; |
20 | 20 | ||
21 | for (i = 0; i < trace->nr_entries; i++) { | 21 | for (i = 0; i < trace->nr_entries; i++) |
22 | printk("%*c", 1 + spaces, ' '); | 22 | printk("%*c%pS\n", 1 + spaces, ' ', (void *)trace->entries[i]); |
23 | print_ip_sym(trace->entries[i]); | ||
24 | } | ||
25 | } | 23 | } |
26 | EXPORT_SYMBOL_GPL(print_stack_trace); | 24 | EXPORT_SYMBOL_GPL(print_stack_trace); |
27 | 25 | ||
@@ -29,7 +27,6 @@ int snprint_stack_trace(char *buf, size_t size, | |||
29 | struct stack_trace *trace, int spaces) | 27 | struct stack_trace *trace, int spaces) |
30 | { | 28 | { |
31 | int i; | 29 | int i; |
32 | unsigned long ip; | ||
33 | int generated; | 30 | int generated; |
34 | int total = 0; | 31 | int total = 0; |
35 | 32 | ||
@@ -37,9 +34,8 @@ int snprint_stack_trace(char *buf, size_t size, | |||
37 | return 0; | 34 | return 0; |
38 | 35 | ||
39 | for (i = 0; i < trace->nr_entries; i++) { | 36 | for (i = 0; i < trace->nr_entries; i++) { |
40 | ip = trace->entries[i]; | 37 | generated = snprintf(buf, size, "%*c%pS\n", 1 + spaces, ' ', |
41 | generated = snprintf(buf, size, "%*c[<%p>] %pS\n", | 38 | (void *)trace->entries[i]); |
42 | 1 + spaces, ' ', (void *) ip, (void *) ip); | ||
43 | 39 | ||
44 | total += generated; | 40 | total += generated; |
45 | 41 | ||