From: renzo@cs.unibo.it (Renzo Davoli)
To: Ulrich Drepper <drepper@gmail.com>, Andi Kleen <ak@suse.de>,
osd@cs.unibo.it, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] 2-ptrace_multi
Date: Fri, 19 May 2006 19:45:34 +0200 [thread overview]
Message-ID: <20060519174534.GA22346@cs.unibo.it> (raw)
In-Reply-To: <20060519130952.GA1242@nevyn.them.org>
On Fri, May 19, 2006 at 09:09:52AM -0400, Daniel Jacobowitz wrote:
> On Fri, May 19, 2006 at 11:07:26AM +0200, Renzo Davoli wrote:
> > On Thu, May 18, 2006 at 07:23:13PM -0700, Ulrich Drepper wrote:
> > > On 5/18/06, Renzo Davoli <renzo@cs.unibo.it> wrote:
> > > >e.g. To virtualize a write you'd have to call PTRACE_PEEKDATA for each
> > > >word of the buffer, very many hundreds cycles lost.
> > >
> > > No, this is not how programs should do it. Just open /proc/PID/mem
> > > and use pread() with an offset corresponding to the address. Now,
> > > repeat your timings using this technique.
> >
> > That would be faster to access the memory but:
> > - the manager has to keep one open file per controlled process
>
> No, it doesn't. It can open it as needed. It can even maintain a
> cache of open mem files.
>
> GDB's been opening it as needed for years. It works very well and is
> drastically faster than PTRACE_PEEKDATA.
>
Over all I could speed up just half of the calls because I cannot write
in /proc/<pid>/mem !
You are proposing a solution which speeds up writes but not reads.
(from fs/proc/base.c)
#define mem_write NULL
#ifndef mem_write
/* This is a security hazard */
static ssize_t mem_write(struct file * file, const char * buf,
size_t count, loff_t *ppos)
....
#endif
My proposals should not add any threats which is not already in
PTRACE_POKEDATA. Now, either the threat do currently exist and my
proposed patch makes is exploitable in a faster way, or it did not
exist and it still does not exist.
PTRACE_MULTI just executes several ptrace requests in a single call.
Other projects would benefit from a similar patch:
see: www.cs.wisc.edu/condor/doc/parrot-agm2003.pdf
http://www.cse.nd.edu/~dthain/papers/ibox-sc05.pdf
They had the very same problem.
renzo
next prev parent reply other threads:[~2006-05-19 17:45 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-05-18 15:53 ptrace enhancements for VM support (patch proposals follow in sep.msgs) Renzo Davoli
2006-05-18 15:56 ` [PATCH] 1-access_process_vm_user Renzo Davoli
2006-05-18 15:58 ` [PATCH] 2-ptrace_multi Renzo Davoli
2006-05-18 20:17 ` Andi Kleen
2006-05-18 21:13 ` Renzo Davoli
2006-05-19 2:23 ` Ulrich Drepper
2006-05-19 9:07 ` Renzo Davoli
2006-05-19 13:09 ` Daniel Jacobowitz
2006-05-19 17:45 ` Renzo Davoli [this message]
2006-05-19 19:15 ` Renzo Davoli
2006-05-19 20:15 ` Daniel Jacobowitz
2006-05-19 20:17 ` Andi Kleen
2006-05-20 6:44 ` Ulrich Drepper
2006-05-20 14:37 ` Alan Cox
2006-05-20 18:30 ` Renzo Davoli
2006-05-20 20:23 ` Ulrich Drepper
2006-05-20 21:39 ` Jeff Dike
2006-05-21 12:38 ` Avi Kivity
2006-05-21 15:28 ` Renzo Davoli
2006-05-22 13:02 ` Daniel Jacobowitz
2006-05-22 15:05 ` Renzo Davoli
2006-05-22 15:26 ` Daniel Jacobowitz
2006-05-18 16:07 ` [PATCH] 3-ptrace_vm Renzo Davoli
2006-05-21 8:03 ` ptrace enhancements for VM support (patch proposals follow in sep.msgs) Peter Chubb
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20060519174534.GA22346@cs.unibo.it \
--to=renzo@cs.unibo.it \
--cc=ak@suse.de \
--cc=drepper@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=osd@cs.unibo.it \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox