aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/tracehook.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/tracehook.h')
-rw-r--r--include/linux/tracehook.h156
1 files changed, 0 insertions, 156 deletions
diff --git a/include/linux/tracehook.h b/include/linux/tracehook.h
index 3b68aa842a92..8b06d4f2b814 100644
--- a/include/linux/tracehook.h
+++ b/include/linux/tracehook.h
@@ -51,21 +51,6 @@
51#include <linux/security.h> 51#include <linux/security.h>
52struct linux_binprm; 52struct linux_binprm;
53 53
54/**
55 * tracehook_expect_breakpoints - guess if task memory might be touched
56 * @task: current task, making a new mapping
57 *
58 * Return nonzero if @task is expected to want breakpoint insertion in
59 * its memory at some point. A zero return is no guarantee it won't
60 * be done, but this is a hint that it's known to be likely.
61 *
62 * May be called with @task->mm->mmap_sem held for writing.
63 */
64static inline int tracehook_expect_breakpoints(struct task_struct *task)
65{
66 return (task->ptrace & PT_PTRACED) != 0;
67}
68
69/* 54/*
70 * ptrace report for syscall entry and exit looks identical. 55 * ptrace report for syscall entry and exit looks identical.
71 */ 56 */
@@ -184,42 +169,6 @@ static inline struct task_struct *tracehook_tracer_task(struct task_struct *tsk)
184} 169}
185 170
186/** 171/**
187 * tracehook_report_exec - a successful exec was completed
188 * @fmt: &struct linux_binfmt that performed the exec
189 * @bprm: &struct linux_binprm containing exec details
190 * @regs: user-mode register state
191 *
192 * An exec just completed, we are shortly going to return to user mode.
193 * The freshly initialized register state can be seen and changed in @regs.
194 * The name, file and other pointers in @bprm are still on hand to be
195 * inspected, but will be freed as soon as this returns.
196 *
197 * Called with no locks, but with some kernel resources held live
198 * and a reference on @fmt->module.
199 */
200static inline void tracehook_report_exec(struct linux_binfmt *fmt,
201 struct linux_binprm *bprm,
202 struct pt_regs *regs)
203{
204 ptrace_event(PTRACE_EVENT_EXEC, 0);
205}
206
207/**
208 * tracehook_report_exit - task has begun to exit
209 * @exit_code: pointer to value destined for @current->exit_code
210 *
211 * @exit_code points to the value passed to do_exit(), which tracing
212 * might change here. This is almost the first thing in do_exit(),
213 * before freeing any resources or setting the %PF_EXITING flag.
214 *
215 * Called with no locks held.
216 */
217static inline void tracehook_report_exit(long *exit_code)
218{
219 ptrace_event(PTRACE_EVENT_EXIT, *exit_code);
220}
221
222/**
223 * tracehook_prepare_clone - prepare for new child to be cloned 172 * tracehook_prepare_clone - prepare for new child to be cloned
224 * @clone_flags: %CLONE_* flags from clone/fork/vfork system call 173 * @clone_flags: %CLONE_* flags from clone/fork/vfork system call
225 * 174 *
@@ -320,52 +269,6 @@ static inline void tracehook_report_clone_complete(int trace,
320} 269}
321 270
322/** 271/**
323 * tracehook_report_vfork_done - vfork parent's child has exited or exec'd
324 * @child: child task, already running
325 * @pid: new child's PID in the parent's namespace
326 *
327 * Called after a %CLONE_VFORK parent has waited for the child to complete.
328 * The clone/vfork system call will return immediately after this.
329 * The @child pointer may be invalid if a self-reaping child died and
330 * tracehook_report_clone() took no action to prevent it from self-reaping.
331 *
332 * Called with no locks held.
333 */
334static inline void tracehook_report_vfork_done(struct task_struct *child,
335 pid_t pid)
336{
337 ptrace_event(PTRACE_EVENT_VFORK_DONE, pid);
338}
339
340/**
341 * tracehook_prepare_release_task - task is being reaped, clean up tracing
342 * @task: task in %EXIT_DEAD state
343 *
344 * This is called in release_task() just before @task gets finally reaped
345 * and freed. This would be the ideal place to remove and clean up any
346 * tracing-related state for @task.
347 *
348 * Called with no locks held.
349 */
350static inline void tracehook_prepare_release_task(struct task_struct *task)
351{
352}
353
354/**
355 * tracehook_finish_release_task - final tracing clean-up
356 * @task: task in %EXIT_DEAD state
357 *
358 * This is called in release_task() when @task is being in the middle of
359 * being reaped. After this, there must be no tracing entanglements.
360 *
361 * Called with write_lock_irq(&tasklist_lock) held.
362 */
363static inline void tracehook_finish_release_task(struct task_struct *task)
364{
365 ptrace_release_task(task);
366}
367
368/**
369 * tracehook_signal_handler - signal handler setup is complete 272 * tracehook_signal_handler - signal handler setup is complete
370 * @sig: number of signal being delivered 273 * @sig: number of signal being delivered
371 * @info: siginfo_t of signal being delivered 274 * @info: siginfo_t of signal being delivered
@@ -388,41 +291,6 @@ static inline void tracehook_signal_handler(int sig, siginfo_t *info,
388 ptrace_notify(SIGTRAP); 291 ptrace_notify(SIGTRAP);
389} 292}
390 293
391/**
392 * tracehook_consider_ignored_signal - suppress short-circuit of ignored signal
393 * @task: task receiving the signal
394 * @sig: signal number being sent
395 *
396 * Return zero iff tracing doesn't care to examine this ignored signal,
397 * so it can short-circuit normal delivery and never even get queued.
398 *
399 * Called with @task->sighand->siglock held.
400 */
401static inline int tracehook_consider_ignored_signal(struct task_struct *task,
402 int sig)
403{
404 return (task->ptrace & PT_PTRACED) != 0;
405}
406
407/**
408 * tracehook_consider_fatal_signal - suppress special handling of fatal signal
409 * @task: task receiving the signal
410 * @sig: signal number being sent
411 *
412 * Return nonzero to prevent special handling of this termination signal.
413 * Normally handler for signal is %SIG_DFL. It can be %SIG_IGN if @sig is
414 * ignored, in which case force_sig() is about to reset it to %SIG_DFL.
415 * When this returns zero, this signal might cause a quick termination
416 * that does not give the debugger a chance to intercept the signal.
417 *
418 * Called with or without @task->sighand->siglock held.
419 */
420static inline int tracehook_consider_fatal_signal(struct task_struct *task,
421 int sig)
422{
423 return (task->ptrace & PT_PTRACED) != 0;
424}
425
426#define DEATH_REAP -1 294#define DEATH_REAP -1
427#define DEATH_DELAYED_GROUP_LEADER -2 295#define DEATH_DELAYED_GROUP_LEADER -2
428 296
@@ -457,30 +325,6 @@ static inline int tracehook_notify_death(struct task_struct *task,
457 return task->ptrace ? SIGCHLD : DEATH_DELAYED_GROUP_LEADER; 325 return task->ptrace ? SIGCHLD : DEATH_DELAYED_GROUP_LEADER;
458} 326}
459 327
460/**
461 * tracehook_report_death - task is dead and ready to be reaped
462 * @task: @current task now exiting
463 * @signal: return value from tracheook_notify_death()
464 * @death_cookie: value passed back from tracehook_notify_death()
465 * @group_dead: nonzero if this was the last thread in the group to die
466 *
467 * Thread has just become a zombie or is about to self-reap. If positive,
468 * @signal is the signal number just sent to the parent (usually %SIGCHLD).
469 * If @signal is %DEATH_REAP, this thread will self-reap. If @signal is
470 * %DEATH_DELAYED_GROUP_LEADER, this is a delayed_group_leader() zombie.
471 * The @death_cookie was passed back by tracehook_notify_death().
472 *
473 * If normal reaping is not inhibited, @task->exit_state might be changing
474 * in parallel.
475 *
476 * Called without locks.
477 */
478static inline void tracehook_report_death(struct task_struct *task,
479 int signal, void *death_cookie,
480 int group_dead)
481{
482}
483
484#ifdef TIF_NOTIFY_RESUME 328#ifdef TIF_NOTIFY_RESUME
485/** 329/**
486 * set_notify_resume - cause tracehook_notify_resume() to be called 330 * set_notify_resume - cause tracehook_notify_resume() to be called