They can happen on x86 as a result of interrupts in BIOS calls.
Noted by Manfred Spraul.
#ifdef CONFIG_KALLSYMS
printk("\n");
#endif
- while (((long) stack & (THREAD_SIZE-1)) != 0) {
+ while (((long) stack & (THREAD_SIZE-4)) != 0) {
addr = *stack++;
if (kernel_text_address(addr)) {
printk(" [<%08lx>] ", addr);
stack = esp;
for(i = 0; i < kstack_depth_to_print; i++) {
- if (((long) stack & (THREAD_SIZE-1)) == 0)
+ if (((long) stack & (THREAD_SIZE-4)) == 0)
break;
if (i && ((i % 8) == 0))
printk("\n ");
unsigned long *sptr = &caller;
unsigned long svalue;
- while (((long) sptr & (THREAD_SIZE-1)) != 0) {
+ while (((long) sptr & (THREAD_SIZE-4)) != 0) {
svalue = *sptr++;
if (kernel_text_address(svalue)) {
*addr++=svalue;