diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:35:10 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2014-06-06 19:35:10 -0400 |
commit | 57d326169e878a1a37b2bccd1cf81f6809ee67b9 (patch) | |
tree | 86ed74ae4dc2beaebce1c67b8459f1873b777d3a /include/linux/ptrace.h | |
parent | 7b215de3d0abbc4f6daf2efd19e8809af0564490 (diff) | |
parent | 0244756edc4b98c129e92c7061d9f383708cf786 (diff) |
Merge branch 'akpm' (patches from Andrew Morton) into next
Merge more updates from Andrew Morton:
- Most of the rest of MM.
This includes "mark remap_file_pages syscall as deprecated" but the
actual "replace remap_file_pages syscall with emulation" is held
back. I guess we'll need to work out when to pull the trigger on
that one.
- various minor cleanups to obscure filesystems
- the drivers/rtc queue
- hfsplus updates
- ufs, hpfs, fatfs, affs, reiserfs
- Documentation/
- signals
- procfs
- cpu hotplug
- lib/idr.c
- rapidio
- sysctl
- ipc updates
* emailed patches from Andrew Morton <akpm@linux-foundation.org>: (171 commits)
ufs: sb mutex merge + mutex_destroy
powerpc: update comments for generic idle conversion
cris: update comments for generic idle conversion
idle: remove cpu_idle() forward declarations
nbd: zero from and len fields in NBD_CMD_DISCONNECT.
mm: convert some level-less printks to pr_*
MAINTAINERS: adi-buildroot-devel is moderated
MAINTAINERS: add linux-api for review of API/ABI changes
mm/kmemleak-test.c: use pr_fmt for logging
fs/dlm/debug_fs.c: replace seq_printf by seq_puts
fs/dlm/lockspace.c: convert simple_str to kstr
fs/dlm/config.c: convert simple_str to kstr
mm: mark remap_file_pages() syscall as deprecated
mm: memcontrol: remove unnecessary memcg argument from soft limit functions
mm: memcontrol: clean up memcg zoneinfo lookup
mm/memblock.c: call kmemleak directly from memblock_(alloc|free)
mm/mempool.c: update the kmemleak stack trace for mempool allocations
lib/radix-tree.c: update the kmemleak stack trace for radix tree allocations
mm: introduce kmemleak_update_trace()
mm/kmemleak.c: use %u to print ->checksum
...
Diffstat (limited to 'include/linux/ptrace.h')
-rw-r--r-- | include/linux/ptrace.h | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/include/linux/ptrace.h b/include/linux/ptrace.h index 07d0df6bf768..077904c8b70d 100644 --- a/include/linux/ptrace.h +++ b/include/linux/ptrace.h | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <linux/sched.h> /* For struct task_struct. */ | 5 | #include <linux/sched.h> /* For struct task_struct. */ |
6 | #include <linux/err.h> /* for IS_ERR_VALUE */ | 6 | #include <linux/err.h> /* for IS_ERR_VALUE */ |
7 | #include <linux/bug.h> /* For BUG_ON. */ | 7 | #include <linux/bug.h> /* For BUG_ON. */ |
8 | #include <linux/pid_namespace.h> /* For task_active_pid_ns. */ | ||
8 | #include <uapi/linux/ptrace.h> | 9 | #include <uapi/linux/ptrace.h> |
9 | 10 | ||
10 | /* | 11 | /* |
@@ -129,6 +130,37 @@ static inline void ptrace_event(int event, unsigned long message) | |||
129 | } | 130 | } |
130 | 131 | ||
131 | /** | 132 | /** |
133 | * ptrace_event_pid - possibly stop for a ptrace event notification | ||
134 | * @event: %PTRACE_EVENT_* value to report | ||
135 | * @pid: process identifier for %PTRACE_GETEVENTMSG to return | ||
136 | * | ||
137 | * Check whether @event is enabled and, if so, report @event and @pid | ||
138 | * to the ptrace parent. @pid is reported as the pid_t seen from the | ||
139 | * the ptrace parent's pid namespace. | ||
140 | * | ||
141 | * Called without locks. | ||
142 | */ | ||
143 | static inline void ptrace_event_pid(int event, struct pid *pid) | ||
144 | { | ||
145 | /* | ||
146 | * FIXME: There's a potential race if a ptracer in a different pid | ||
147 | * namespace than parent attaches between computing message below and | ||
148 | * when we acquire tasklist_lock in ptrace_stop(). If this happens, | ||
149 | * the ptracer will get a bogus pid from PTRACE_GETEVENTMSG. | ||
150 | */ | ||
151 | unsigned long message = 0; | ||
152 | struct pid_namespace *ns; | ||
153 | |||
154 | rcu_read_lock(); | ||
155 | ns = task_active_pid_ns(rcu_dereference(current->parent)); | ||
156 | if (ns) | ||
157 | message = pid_nr_ns(pid, ns); | ||
158 | rcu_read_unlock(); | ||
159 | |||
160 | ptrace_event(event, message); | ||
161 | } | ||
162 | |||
163 | /** | ||
132 | * ptrace_init_task - initialize ptrace state for a new child | 164 | * ptrace_init_task - initialize ptrace state for a new child |
133 | * @child: new child task | 165 | * @child: new child task |
134 | * @ptrace: true if child should be ptrace'd by parent's tracer | 166 | * @ptrace: true if child should be ptrace'd by parent's tracer |