Commit ee00560c authored by Denys Vlasenko's avatar Denys Vlasenko Committed by Linus Torvalds

ptrace: remove PTRACE_SEIZE_DEVEL bit

PTRACE_SEIZE code is tested and ready for production use, remove the
code which requires special bit in data argument to make PTRACE_SEIZE
work.

Strace team prepares for a new release of strace, and we would like to
ship the code which uses PTRACE_SEIZE, preferably after this change goes
into released kernel.
Signed-off-by: default avatarDenys Vlasenko <vda.linux@googlemail.com>
Acked-by: default avatarTejun Heo <tj@kernel.org>
Acked-by: default avatarOleg Nesterov <oleg@redhat.com>
Cc: Pedro Alves <palves@redhat.com>
Cc: Jan Kratochvil <jan.kratochvil@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 5cdf389a
...@@ -51,9 +51,6 @@ ...@@ -51,9 +51,6 @@
#define PTRACE_INTERRUPT 0x4207 #define PTRACE_INTERRUPT 0x4207
#define PTRACE_LISTEN 0x4208 #define PTRACE_LISTEN 0x4208
/* flags in @data for PTRACE_SEIZE */
#define PTRACE_SEIZE_DEVEL 0x80000000 /* temp flag for development */
/* Wait extended result codes for the above trace options. */ /* Wait extended result codes for the above trace options. */
#define PTRACE_EVENT_FORK 1 #define PTRACE_EVENT_FORK 1
#define PTRACE_EVENT_VFORK 2 #define PTRACE_EVENT_VFORK 2
...@@ -64,7 +61,7 @@ ...@@ -64,7 +61,7 @@
/* Extended result codes which enabled by means other than options. */ /* Extended result codes which enabled by means other than options. */
#define PTRACE_EVENT_STOP 128 #define PTRACE_EVENT_STOP 128
/* options set using PTRACE_SETOPTIONS */ /* Options set using PTRACE_SETOPTIONS or using PTRACE_SEIZE @data param */
#define PTRACE_O_TRACESYSGOOD 1 #define PTRACE_O_TRACESYSGOOD 1
#define PTRACE_O_TRACEFORK (1 << PTRACE_EVENT_FORK) #define PTRACE_O_TRACEFORK (1 << PTRACE_EVENT_FORK)
#define PTRACE_O_TRACEVFORK (1 << PTRACE_EVENT_VFORK) #define PTRACE_O_TRACEVFORK (1 << PTRACE_EVENT_VFORK)
......
...@@ -237,25 +237,10 @@ static int ptrace_attach(struct task_struct *task, long request, ...@@ -237,25 +237,10 @@ static int ptrace_attach(struct task_struct *task, long request,
bool seize = (request == PTRACE_SEIZE); bool seize = (request == PTRACE_SEIZE);
int retval; int retval;
/*
* SEIZE will enable new ptrace behaviors which will be implemented
* gradually. SEIZE_DEVEL bit is used to prevent applications
* expecting full SEIZE behaviors trapping on kernel commits which
* are still in the process of implementing them.
*
* Only test programs for new ptrace behaviors being implemented
* should set SEIZE_DEVEL. If unset, SEIZE will fail with -EIO.
*
* Once SEIZE behaviors are completely implemented, this flag
* will be removed.
*/
retval = -EIO; retval = -EIO;
if (seize) { if (seize) {
if (addr != 0) if (addr != 0)
goto out; goto out;
if (!(flags & PTRACE_SEIZE_DEVEL))
goto out;
flags &= ~(unsigned long)PTRACE_SEIZE_DEVEL;
if (flags & ~(unsigned long)PTRACE_O_MASK) if (flags & ~(unsigned long)PTRACE_O_MASK)
goto out; goto out;
flags = PT_PTRACED | PT_SEIZED | (flags << PT_OPT_FLAG_SHIFT); flags = PT_PTRACED | PT_SEIZED | (flags << PT_OPT_FLAG_SHIFT);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment