show_trace(current, esp); 
show_trace(task, esp); 
void show_stack(struct task_struct *task, unsigned long *esp){	unsigned long *stack;	int i;	if (esp == NULL) {		if (task != current && task != NULL) {			/* XXX: Isn't this bogus? I.e. isn't this the			 * *userspace* stack of this task? If not so, use this			 * even when task == current (as in i386).			 */			esp = (unsigned long *) KSTK_ESP(task);			/* Which one? No actual difference - just coding style.*/			//esp = (unsigned long *) PT_REGS_IP(&task->thread.regs);		} else {			esp = (unsigned long *) &esp;		}	}	stack = esp;	for(i = 0; i < kstack_depth_to_print; i++) {		if (kstack_end(stack))			break;		if (i && ((i % 8) == 0))			printk("\n       ");		printk("%08lx ", *stack++);	}	printk("Call Trace: \n");	show_trace(current, esp);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/fad1c45c939bb246a488be1fa06f539e85b80545/sysrq.c/buggy/arch/um/kernel/sysrq.c