@@ -139,8 +139,8 @@ fixup_bp_irq_link(unsigned long bp, unsigned long *stack,
139
139
* severe exception (double fault, nmi, stack fault, debug, mce) hardware stack
140
140
*/
141
141
142
- void dump_trace (struct task_struct * task , struct pt_regs * regs ,
143
- unsigned long * stack , unsigned long bp ,
142
+ void dump_trace (struct task_struct * task ,
143
+ struct pt_regs * regs , unsigned long * stack ,
144
144
const struct stacktrace_ops * ops , void * data )
145
145
{
146
146
const unsigned cpu = get_cpu ();
@@ -149,6 +149,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
149
149
unsigned used = 0 ;
150
150
struct thread_info * tinfo ;
151
151
int graph = 0 ;
152
+ unsigned long bp ;
152
153
153
154
if (!task )
154
155
task = current ;
@@ -160,18 +161,7 @@ void dump_trace(struct task_struct *task, struct pt_regs *regs,
160
161
stack = (unsigned long * )task -> thread .sp ;
161
162
}
162
163
163
- #ifdef CONFIG_FRAME_POINTER
164
- if (!bp ) {
165
- if (task == current ) {
166
- /* Grab bp right from our regs */
167
- get_bp (bp );
168
- } else {
169
- /* bp is the last reg pushed by switch_to */
170
- bp = * (unsigned long * ) task -> thread .sp ;
171
- }
172
- }
173
- #endif
174
-
164
+ bp = stack_frame (task , regs );
175
165
/*
176
166
* Print function call entries in all stacks, starting at the
177
167
* current stack address. If the stacks consist of nested
@@ -235,7 +225,7 @@ EXPORT_SYMBOL(dump_trace);
235
225
236
226
void
237
227
show_stack_log_lvl (struct task_struct * task , struct pt_regs * regs ,
238
- unsigned long * sp , unsigned long bp , char * log_lvl )
228
+ unsigned long * sp , char * log_lvl )
239
229
{
240
230
unsigned long * irq_stack_end ;
241
231
unsigned long * irq_stack ;
@@ -279,7 +269,7 @@ show_stack_log_lvl(struct task_struct *task, struct pt_regs *regs,
279
269
preempt_enable ();
280
270
281
271
printk (KERN_CONT "\n" );
282
- show_trace_log_lvl (task , regs , sp , bp , log_lvl );
272
+ show_trace_log_lvl (task , regs , sp , log_lvl );
283
273
}
284
274
285
275
void show_registers (struct pt_regs * regs )
@@ -308,7 +298,7 @@ void show_registers(struct pt_regs *regs)
308
298
309
299
printk (KERN_EMERG "Stack:\n" );
310
300
show_stack_log_lvl (NULL , regs , (unsigned long * )sp ,
311
- regs -> bp , KERN_EMERG );
301
+ KERN_EMERG );
312
302
313
303
printk (KERN_EMERG "Code: " );
314
304
0 commit comments