|
@@ -51,14 +51,16 @@ void traceback(struct pt_regs *regs)
|
|
|
|
|
|
for (int i = 0; i < 10; ++i)
|
|
|
{
|
|
|
- printk_color(ORANGE, BLACK, "rbp:%#018lx,*rbp:%#018lx\n", rbp, *rbp);
|
|
|
if (lookup_kallsyms(ret_addr, i) != 0)
|
|
|
break;
|
|
|
|
|
|
-
|
|
|
- if (((*rbp) & (~STACK_SIZE)) == 0)
|
|
|
+
|
|
|
+
|
|
|
+ if((uint64_t)(rbp) >= current_pcb->thread->rbp || ((uint64_t)rbp<regs->rsp))
|
|
|
break;
|
|
|
|
|
|
+ printk_color(ORANGE, BLACK, "rbp:%#018lx,*rbp:%#018lx\n", rbp, *rbp);
|
|
|
+
|
|
|
|
|
|
|
|
|
ret_addr = *(rbp + 1);
|