函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:arch\x86\kernel\unwind_frame.c Create Date:2022-07-27 09:50:47
Last Modify:2020-03-12 14:18:49 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:unwind_next_frame

函数原型:bool unwind_next_frame(struct unwind_state *state)

返回类型:bool

参数:

类型参数名称
struct unwind_state *state
265  如果unwind_done(state)则返回:false
269  如果regsser_mode(regs) determines whether a register set came from user* mode则转到:the_end
272  如果is_last_task_frame(state)则
273  regs等于task_pt_regs(task)
286  如果非ser_mode(regs) determines whether a register set came from user* mode则转到:the_end
294  regs等于regs
295  bp = NULL
296  ip等于0
297  返回:true
301  如果next_bp
302  next_bp等于next_bp
303  next_bp = NULL
304  否则如果regs
305  next_bp等于bp
306  否则
307  next_bp等于This disables KASAN checking when reading a value from another task's stack,* since the other task could be running on another CPU and could have poisoned* the stack in the meantime.(task, * bp)
311  如果非update_stack_state(state, next_bp)则转到:bad_address
314  返回:true
316  bad_address :
317  error = true
326  如果task不等于当前进程则转到:the_end
333  如果got_irqin_entry_code(ip)则转到:the_end
335  如果regssp大于等于last_aligned_frame(state)且sp小于task_pt_regs(task)则转到:the_end
344  如果IS_ENABLED(CONFIG_FOO) evaluates to 1 if CONFIG_FOO is set to 'y' or 'm',* 0 otherwise.(CONFIG_X86_32)则转到:the_end
347  如果regs
348  printk_deferred_once(warning conditions "WARNING: kernel stack regs at %p in %s:%d has bad 'bp' value %p\n", regs, 是否使用FPU, 进程ID, next_bp)
352  unwind_dump(state)
353  否则
354  printk_deferred_once(warning conditions "WARNING: kernel stack frame pointer at %p in %s:%d has bad value %p\n", bp, 是否使用FPU, 进程ID, next_bp)
358  unwind_dump(state)
360  the_end :
361  type等于STACK_TYPE_UNKNOWN
362  返回:false
调用者
名称描述
__unwind_start
__unwind_start
show_trace_log_lvl
arch_stack_walk
arch_stack_walk_reliableThis function returns an error if it detects any unreliable features of the* stack. Otherwise it guarantees that the stack trace is reliable.* If the task is not 'current', the caller *must* ensure the task is inactive.
__unwind_start