Lines Matching refs:child
10 unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs) in convert_ip_to_linear() argument
33 mutex_lock(&child->mm->context.lock); in convert_ip_to_linear()
34 if (unlikely(!child->mm->context.ldt || in convert_ip_to_linear()
35 seg >= child->mm->context.ldt->size)) in convert_ip_to_linear()
38 desc = &child->mm->context.ldt->entries[seg]; in convert_ip_to_linear()
46 mutex_unlock(&child->mm->context.lock); in convert_ip_to_linear()
52 static int is_setting_trap_flag(struct task_struct *child, struct pt_regs *regs) in is_setting_trap_flag() argument
56 unsigned long addr = convert_ip_to_linear(child, regs); in is_setting_trap_flag()
58 copied = access_process_vm(child, addr, opcode, sizeof(opcode), 0); in is_setting_trap_flag()
106 static int enable_single_step(struct task_struct *child) in enable_single_step() argument
108 struct pt_regs *regs = task_pt_regs(child); in enable_single_step()
121 if (unlikely(test_tsk_thread_flag(child, TIF_SINGLESTEP))) in enable_single_step()
129 set_tsk_thread_flag(child, TIF_SINGLESTEP); in enable_single_step()
145 if (is_setting_trap_flag(child, regs)) { in enable_single_step()
146 clear_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
155 return test_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
157 set_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
193 static void enable_step(struct task_struct *child, bool block) in enable_step() argument
202 if (enable_single_step(child) && block) in enable_step()
203 set_task_blockstep(child, true); in enable_step()
204 else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) in enable_step()
205 set_task_blockstep(child, false); in enable_step()
208 void user_enable_single_step(struct task_struct *child) in user_enable_single_step() argument
210 enable_step(child, 0); in user_enable_single_step()
213 void user_enable_block_step(struct task_struct *child) in user_enable_block_step() argument
215 enable_step(child, 1); in user_enable_block_step()
218 void user_disable_single_step(struct task_struct *child) in user_disable_single_step() argument
223 if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) in user_disable_single_step()
224 set_task_blockstep(child, false); in user_disable_single_step()
227 clear_tsk_thread_flag(child, TIF_SINGLESTEP); in user_disable_single_step()
230 if (test_and_clear_tsk_thread_flag(child, TIF_FORCED_TF)) in user_disable_single_step()
231 task_pt_regs(child)->flags &= ~X86_EFLAGS_TF; in user_disable_single_step()