Lines Matching full:child
9 unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs) in convert_ip_to_linear() argument
32 mutex_lock(&child->mm->context.lock); in convert_ip_to_linear()
33 if (unlikely((seg >> 3) >= child->mm->context.size)) in convert_ip_to_linear()
36 desc = child->mm->context.ldt + seg; in convert_ip_to_linear()
44 mutex_unlock(&child->mm->context.lock); in convert_ip_to_linear()
50 static int is_setting_trap_flag(struct task_struct *child, struct pt_regs *regs) in is_setting_trap_flag() argument
54 unsigned long addr = convert_ip_to_linear(child, regs); in is_setting_trap_flag()
56 copied = access_process_vm(child, addr, opcode, sizeof(opcode), 0); in is_setting_trap_flag()
104 static int enable_single_step(struct task_struct *child) in enable_single_step() argument
106 struct pt_regs *regs = task_pt_regs(child); in enable_single_step()
119 if (unlikely(test_tsk_thread_flag(child, TIF_SINGLESTEP))) in enable_single_step()
127 set_tsk_thread_flag(child, TIF_SINGLESTEP); in enable_single_step()
143 if (is_setting_trap_flag(child, regs)) { in enable_single_step()
144 clear_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
153 return test_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
155 set_tsk_thread_flag(child, TIF_FORCED_TF); in enable_single_step()
163 static void enable_step(struct task_struct *child, bool block) in enable_step() argument
172 if (enable_single_step(child) && block) { in enable_step()
177 set_tsk_thread_flag(child, TIF_BLOCKSTEP); in enable_step()
178 } else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { in enable_step()
183 clear_tsk_thread_flag(child, TIF_BLOCKSTEP); in enable_step()
187 void user_enable_single_step(struct task_struct *child) in user_enable_single_step() argument
189 enable_step(child, 0); in user_enable_single_step()
192 void user_enable_block_step(struct task_struct *child) in user_enable_block_step() argument
194 enable_step(child, 1); in user_enable_block_step()
197 void user_disable_single_step(struct task_struct *child) in user_disable_single_step() argument
202 if (test_tsk_thread_flag(child, TIF_BLOCKSTEP)) { in user_disable_single_step()
207 clear_tsk_thread_flag(child, TIF_BLOCKSTEP); in user_disable_single_step()
211 clear_tsk_thread_flag(child, TIF_SINGLESTEP); in user_disable_single_step()
214 if (test_and_clear_tsk_thread_flag(child, TIF_FORCED_TF)) in user_disable_single_step()
215 task_pt_regs(child)->flags &= ~X86_EFLAGS_TF; in user_disable_single_step()