Lines Matching full:stack
30 bool noinstr in_task_stack(unsigned long *stack, struct task_struct *task, in in_task_stack() argument
36 if (stack < begin || stack >= end) in in_task_stack()
48 bool noinstr in_entry_stack(unsigned long *stack, struct stack_info *info) in in_entry_stack() argument
55 if ((void *)stack < begin || (void *)stack >= end) in in_entry_stack()
126 /* No access to the user space stack of other tasks. Ignore. */ in show_opcodes()
158 * ordering reasons: if the registers are on the next stack, we don't in show_regs_if_on_stack()
160 * the wrong stack. Later, when show_trace_log_lvl() switches to the in show_regs_if_on_stack()
161 * next stack, this function will be called again with the same regs so in show_regs_if_on_stack()
179 * This function reads pointers from the stack and dereferences them. The
185 unsigned long *stack, const char *log_lvl) in __show_trace_log_lvl() argument
195 unwind_start(&state, task, regs, stack); in __show_trace_log_lvl()
196 stack = stack ?: get_stack_pointer(task, regs); in __show_trace_log_lvl()
200 * Iterate through the stacks, starting with the current stack pointer. in __show_trace_log_lvl()
201 * Each stack has a pointer to the next one. in __show_trace_log_lvl()
204 * - task stack in __show_trace_log_lvl()
205 * - interrupt stack in __show_trace_log_lvl()
207 * - entry stack in __show_trace_log_lvl()
210 * - task stack in __show_trace_log_lvl()
211 * - softirq stack in __show_trace_log_lvl()
212 * - hardirq stack in __show_trace_log_lvl()
213 * - entry stack in __show_trace_log_lvl()
215 for (; stack; stack = stack_info.next_sp) { in __show_trace_log_lvl()
218 stack = PTR_ALIGN(stack, sizeof(long)); in __show_trace_log_lvl()
220 if (get_stack_info(stack, task, &stack_info, &visit_mask)) { in __show_trace_log_lvl()
222 * We weren't on a valid stack. It's possible that in __show_trace_log_lvl()
223 * we overflowed a valid stack into a guard page. in __show_trace_log_lvl()
227 stack = (unsigned long *)PAGE_ALIGN((unsigned long)stack); in __show_trace_log_lvl()
228 if (get_stack_info(stack, task, &stack_info, &visit_mask)) in __show_trace_log_lvl()
240 * Scan the stack, printing any text addresses we find. At the in __show_trace_log_lvl()
241 * same time, follow proper stack frames with the unwinder. in __show_trace_log_lvl()
249 for (; stack < stack_info.end; stack++) { in __show_trace_log_lvl()
252 unsigned long addr = READ_ONCE_NOCHECK(*stack); in __show_trace_log_lvl()
263 if (regs && stack == ®s->ip) in __show_trace_log_lvl()
266 if (stack == ret_addr_p) in __show_trace_log_lvl()
271 * function, its return address on the stack is in __show_trace_log_lvl()
279 addr, stack); in __show_trace_log_lvl()
307 unsigned long *stack, const char *log_lvl) in show_trace_log_lvl() argument
319 __show_trace_log_lvl(task, regs, stack, log_lvl); in show_trace_log_lvl()
331 * Stack frames below this one aren't interesting. Don't show them in show_stack()
401 * We're not going to return, but we might be on an IST stack or in oops_end()
402 * have very little stack space left. Rewind the stack and kill in oops_end()
404 * Before we rewind the stack, we have to tell KASAN that we're going to in oops_end()
405 * reuse the task stack and that existing poisons are invalid. in oops_end()
486 * When in-kernel, we also print out the stack at the time of the fault.. in show_regs()