diff options
Diffstat (limited to 'arch/x86/kernel/dumpstack.c')
| -rw-r--r-- | arch/x86/kernel/dumpstack.c | 10 | 
1 files changed, 6 insertions, 4 deletions
| diff --git a/arch/x86/kernel/dumpstack.c b/arch/x86/kernel/dumpstack.c index 48ce44576947..25c06b67e7e0 100644 --- a/arch/x86/kernel/dumpstack.c +++ b/arch/x86/kernel/dumpstack.c @@ -29,8 +29,8 @@ static int die_counter;  static struct pt_regs exec_summary_regs; -bool in_task_stack(unsigned long *stack, struct task_struct *task, -		   struct stack_info *info) +bool noinstr in_task_stack(unsigned long *stack, struct task_struct *task, +			   struct stack_info *info)  {  	unsigned long *begin = task_stack_page(task);  	unsigned long *end   = task_stack_page(task) + THREAD_SIZE; @@ -46,7 +46,8 @@ bool in_task_stack(unsigned long *stack, struct task_struct *task,  	return true;  } -bool in_entry_stack(unsigned long *stack, struct stack_info *info) +/* Called from get_stack_info_noinstr - so must be noinstr too */ +bool noinstr in_entry_stack(unsigned long *stack, struct stack_info *info)  {  	struct entry_stack *ss = cpu_entry_stack(smp_processor_id()); @@ -115,7 +116,8 @@ void show_opcodes(struct pt_regs *regs, const char *loglvl)  	unsigned long prologue = regs->ip - PROLOGUE_SIZE;  	if (copy_code(regs, opcodes, prologue, sizeof(opcodes))) { -		printk("%sCode: Bad RIP value.\n", loglvl); +		printk("%sCode: Unable to access opcode bytes at RIP 0x%lx.\n", +		       loglvl, prologue);  	} else {  		printk("%sCode: %" __stringify(PROLOGUE_SIZE) "ph <%02x> %"  		       __stringify(EPILOGUE_SIZE) "ph\n", loglvl, opcodes, | 
