Lines Matching refs:child

14 unsigned long convert_ip_to_linear(struct task_struct *child, struct pt_regs *regs)
38 mutex_lock(&child->mm->context.lock);
39 if (unlikely(!child->mm->context.ldt ||
40 seg >= child->mm->context.ldt->nr_entries))
43 desc = &child->mm->context.ldt->entries[seg];
51 mutex_unlock(&child->mm->context.lock);
58 static int is_setting_trap_flag(struct task_struct *child, struct pt_regs *regs)
62 unsigned long addr = convert_ip_to_linear(child, regs);
64 copied = access_process_vm(child, addr, opcode, sizeof(opcode),
113 static int enable_single_step(struct task_struct *child)
115 struct pt_regs *regs = task_pt_regs(child);
128 if (unlikely(test_tsk_thread_flag(child, TIF_SINGLESTEP)))
135 set_tsk_thread_flag(child, TIF_SINGLESTEP);
141 set_task_syscall_work(child, SYSCALL_EXIT_TRAP);
157 if (is_setting_trap_flag(child, regs)) {
158 clear_tsk_thread_flag(child, TIF_FORCED_TF);
167 return test_tsk_thread_flag(child, TIF_FORCED_TF);
169 set_tsk_thread_flag(child, TIF_FORCED_TF);
204 static void enable_step(struct task_struct *child, bool block)
213 if (enable_single_step(child) && block)
214 set_task_blockstep(child, true);
215 else if (test_tsk_thread_flag(child, TIF_BLOCKSTEP))
216 set_task_blockstep(child, false);
219 void user_enable_single_step(struct task_struct *child)
221 enable_step(child, 0);
224 void user_enable_block_step(struct task_struct *child)
226 enable_step(child, 1);
229 void user_disable_single_step(struct task_struct *child)
234 if (test_tsk_thread_flag(child, TIF_BLOCKSTEP))
235 set_task_blockstep(child, false);
238 clear_tsk_thread_flag(child, TIF_SINGLESTEP);
239 clear_task_syscall_work(child, SYSCALL_EXIT_TRAP);
242 if (test_and_clear_tsk_thread_flag(child, TIF_FORCED_TF))
243 task_pt_regs(child)->flags &= ~X86_EFLAGS_TF;