All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: Christoph Hellwig <hch@lst.de>,
	chris@zankel.net, cooloney@kernel.org, deller@gmx.de,
	geert@linux-m68k.org, gerg@uclinux.org, hskinnemoen@atmel.com,
	jdike@addtoit.com, jesper.nilsson@
Cc: Roland McGrath <roland@redhat.com>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Fwd: arch/ && tracehook_report_syscall_xxx()
Date: Wed, 29 Apr 2009 21:08:52 +0200	[thread overview]
Message-ID: <20090429190852.GA14515@redhat.com> (raw)
In-Reply-To: <20090427183218.GA31596@lst.de>

On 04/27, Christoph Hellwig wrote:
>
> I've poked a few arch maintainers in the past to separate the enter/exit
> path and usually got the desired changes :)

I'd like to try your method!

So. Dear maintainers of

	alpha
	arm
	avr32
	blackfin
	cris
	h8300
	m32r
	m68k
	m68knommu
	mips
	parisc
	um
	xtensa

. Could you please convert your syscall trace code to use
tracehook_report_syscall_entry/tracehook_report_syscall_exit ?


For example, let's look at more or less typical arch/alpha/kernel/ptrace.c,

	asmlinkage void
	syscall_trace(void)
	{
		if (!test_thread_flag(TIF_SYSCALL_TRACE))
			return;
		if (!(current->ptrace & PT_PTRACED))
			return;
		/* The 0x80 provides a way for the tracing parent to distinguish
		   between a syscall stop and SIGTRAP delivery */
		ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
					 ? 0x80 : 0));

		/*
		 * This isn't the same as continuing with a signal, but it will do
		 * for normal use.  strace only continues with a signal if the
		 * stopping signal is not SIGTRAP.  -brl
		 */
		if (current->exit_code) {
			send_sig(current->exit_code, current, 1);
			current->exit_code = 0;
		}
	}

it would be really nice to turn it into something like

	asmlinkage void
	syscall_trace(int entryexit)
	{
		if (!test_thread_flag(TIF_SYSCALL_TRACE))
			return;

		if (entryexit)
			tracehook_report_syscall_entry(task_pt_regs(current));
		else
			tracehook_report_syscall_exit(task_pt_regs(current), stepping);
	}

Also, tracehook_report_syscall_entry() might want to abort this system
call (please see the comment above this helper), it would be great to
take the returned value into account.


arch/* play with ptrace internals which should be changed soon, not good.

Thanks!

Oleg.

WARNING: multiple messages have this Message-ID (diff)
From: Oleg Nesterov <oleg@redhat.com>
To: Christoph Hellwig <hch@lst.de>,
	chris@zankel.net, cooloney@kernel.org, deller@gmx.de,
	geert@linux-m68k.org, gerg@uclinux.org, hskinnemoen@atmel.com,
	jdike@addtoit.com, jesper.nilsson@axis.com, kyle@mcmartin.ca,
	linux@arm.linux.org.uk, ralf@linux-mips.org, rth@twiddle.net,
	starvik@axis.com, takata@linux-m32r.org,
	ysato@users.sourceforge.jp, zippel@linux-m68k.org
Cc: Roland McGrath <roland@redhat.com>,
	linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org
Subject: Fwd: arch/ && tracehook_report_syscall_xxx()
Date: Wed, 29 Apr 2009 21:08:52 +0200	[thread overview]
Message-ID: <20090429190852.GA14515@redhat.com> (raw)
Message-ID: <20090429190852.9Kv4hvQU8h8bQXQGPJHqFg3OUD69HihdimieIzJzggE@z> (raw)
In-Reply-To: <20090427183218.GA31596@lst.de>

On 04/27, Christoph Hellwig wrote:
>
> I've poked a few arch maintainers in the past to separate the enter/exit
> path and usually got the desired changes :)

I'd like to try your method!

So. Dear maintainers of

	alpha
	arm
	avr32
	blackfin
	cris
	h8300
	m32r
	m68k
	m68knommu
	mips
	parisc
	um
	xtensa

. Could you please convert your syscall trace code to use
tracehook_report_syscall_entry/tracehook_report_syscall_exit ?


For example, let's look at more or less typical arch/alpha/kernel/ptrace.c,

	asmlinkage void
	syscall_trace(void)
	{
		if (!test_thread_flag(TIF_SYSCALL_TRACE))
			return;
		if (!(current->ptrace & PT_PTRACED))
			return;
		/* The 0x80 provides a way for the tracing parent to distinguish
		   between a syscall stop and SIGTRAP delivery */
		ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
					 ? 0x80 : 0));

		/*
		 * This isn't the same as continuing with a signal, but it will do
		 * for normal use.  strace only continues with a signal if the
		 * stopping signal is not SIGTRAP.  -brl
		 */
		if (current->exit_code) {
			send_sig(current->exit_code, current, 1);
			current->exit_code = 0;
		}
	}

it would be really nice to turn it into something like

	asmlinkage void
	syscall_trace(int entryexit)
	{
		if (!test_thread_flag(TIF_SYSCALL_TRACE))
			return;

		if (entryexit)
			tracehook_report_syscall_entry(task_pt_regs(current));
		else
			tracehook_report_syscall_exit(task_pt_regs(current), stepping);
	}

Also, tracehook_report_syscall_entry() might want to abort this system
call (please see the comment above this helper), it would be great to
take the returned value into account.


arch/* play with ptrace internals which should be changed soon, not good.

Thanks!

Oleg.


  reply	other threads:[~2009-04-29 19:22 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-04-27 18:04 arch/ && tracehook_report_syscall_xxx() Oleg Nesterov
2009-04-27 18:29 ` Roland McGrath
2009-04-27 18:32   ` Christoph Hellwig
2009-04-29 19:08     ` Oleg Nesterov [this message]
2009-04-29 19:08       ` Fwd: " Oleg Nesterov
2009-04-29 19:17       ` Roland McGrath
2009-04-29 19:30       ` Ingo Molnar
2009-04-29 19:44       ` Christoph Hellwig
2009-04-29 19:53       ` Kyle McMartin
2009-04-27 18:43   ` Oleg Nesterov
2009-04-27 19:24 ` David Howells

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=20090429190852.GA14515@redhat.com \
    --to=oleg@redhat.com \
    --cc=chris@zankel.net \
    --cc=cooloney@kernel.org \
    --cc=deller@gmx.de \
    --cc=geert@linux-m68k.org \
    --cc=gerg@uclinux.org \
    --cc=hch@lst.de \
    --cc=hskinnemoen@atmel.com \
    --cc=jdike@addtoit.com \
    --cc=linux-arch@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roland@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.