- Improve the INKERNEL macro such that it can no longer give false positives.
This fixes the stack(9) functionality. Submitted by: Antoine Brodin <antoine.brodin@laposte.net>
This commit is contained in:
parent
49bdcff518
commit
660002d398
@ -180,7 +180,7 @@ db_ss(struct db_variable *vp, db_expr_t *valuep, int op)
|
||||
* Stack trace.
|
||||
*/
|
||||
#define INKERNEL(va) (((va) >= DMAP_MIN_ADDRESS && (va) < DMAP_MAX_ADDRESS) \
|
||||
|| (va) >= KERNBASE)
|
||||
|| ((va) >= KERNBASE && (va) < VM_MAX_KERNEL_ADDRESS))
|
||||
|
||||
struct amd64_frame {
|
||||
struct amd64_frame *f_frame;
|
||||
@ -515,6 +515,10 @@ stack_save(struct stack *st)
|
||||
break;
|
||||
if (stack_put(st, callpc) == -1)
|
||||
break;
|
||||
if (frame->f_frame <= frame ||
|
||||
(vm_offset_t)frame->f_frame >=
|
||||
(vm_offset_t)rbp + KSTACK_PAGES * PAGE_SIZE)
|
||||
break;
|
||||
frame = frame->f_frame;
|
||||
}
|
||||
}
|
||||
|
@ -168,7 +168,8 @@ db_ss(struct db_variable *vp, db_expr_t *valuep, int op)
|
||||
/*
|
||||
* Stack trace.
|
||||
*/
|
||||
#define INKERNEL(va) (((vm_offset_t)(va)) >= USRSTACK)
|
||||
#define INKERNEL(va) (((vm_offset_t)(va)) >= USRSTACK && \
|
||||
((vm_offset_t)(va)) < VM_MAX_KERNEL_ADDRESS)
|
||||
|
||||
struct i386_frame {
|
||||
struct i386_frame *f_frame;
|
||||
@ -525,6 +526,10 @@ stack_save(struct stack *st)
|
||||
break;
|
||||
if (stack_put(st, callpc) == -1)
|
||||
break;
|
||||
if (frame->f_frame <= frame ||
|
||||
(vm_offset_t)frame->f_frame >=
|
||||
(vm_offset_t)ebp + KSTACK_PAGES * PAGE_SIZE)
|
||||
break;
|
||||
frame = frame->f_frame;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user