From: Roland McGrath <roland@redhat.com>
To: Mike Frysinger <vapier.adi@gmail.com>
Cc: Christoph Hellwig <hch@lst.de>,
oleg@redhat.com, Andrew Morton <akpm@linux-foundation.org>,
linux-kernel@vger.kernel.org, linux-arch@vger.kernel.org,
uclinux-dist-devel@blackfin.uclinux.org
Subject: Re: [PATCH 1/2] Blackfin: initial tracehook support
Date: Thu, 11 Feb 2010 19:24:06 -0800 (PST) [thread overview]
Message-ID: <20100212032406.BE645C81B@magilla.sf.frob.com> (raw)
In-Reply-To: Mike Frysinger's message of Thursday, 11 February 2010 18:54:04 -0500 <8bd0f97a1002111554ib69bd48rc3c5f4af65058281@mail.gmail.com>
> where is user_regset actually used ? i only see it in fs/binfmt_elf.c
> and core dumps, neither of which work on nommu systems (or at least on
> Blackfin systems).
The core dump code in binfmt_elf_fdpic.c appears identical to an old
version of the binfmt_elf.c code. That file appears to have been made with
the "copy and paste" school of code sharing, of which I am a detractor.
The ELF core dump code can be shared between those two, and really should
be. Once that's done, you will want to use the CORE_DUMP_USE_REGSET flavor
of the code and clean out any old core-related cruft you had in asm/elf.h.
In the long run, the non-user_regset version of the core dump code will go
away after every arch has been cleaned up.
The "ptrace: Add support for generic PTRACE_GETREGSET/PTRACE_SETREGSET"
patch making its way through the obstacle course right now will make the
generic ptrace code use user_regset. That use is conditional on
CONFIG_HAVE_ARCH_TRACEHOOK and your kernel will stop building if you have
set that without meeting its requirements.
Moreover, the whole point of CONFIG_HAVE_ARCH_TRACEHOOK is to indicate the
minimum arch requirements that all future generic code can rely on. If you
set it without meeting the documented requirements as arch/Kconfig tells
you to, then your arch will one day be broken by new generic code getting
merged in.
> i dont see anyone calling syscall_get_arguments() with i!=0, and a few
> other arches are doing the BUG_ON(i) thing too.
Someone will, and then they will crash. A few others being half-assed is
no good reason for you to follow suit.
> but should be easy to implement this with memory walking code ...
Good!
> this is unchanged from the previous Blackfin behavior, and it's how
> most arches behaved in 2.6.32. but looking in latest mainline, it
> seems people are changing to:
> if (test_thread_flag(TIF_SINGLESTEP) || test_thread_flag(TIF_SYSCALL_TRACE))
> tracehook_report_syscall_exit(regs, 0);
>
> so changing Blackfin too should be straightforward i guess
You can't blindly follow another arch. All the details that tell you what
is the right thing to do here are arch-specific. I see no arch that does
what you say, and it seems certain they would be wrong if they did.
You should always call tracehook_report_syscall_exit() if TIF_SYSCALL_TRACE
is set. Whether to call it otherwise depends on arch details.
On some machines, single-step into a syscall instruction is no different
from other user instructions, so the normal SIGTRAP will come afterwards
anyway.
On other machines, entering the kernel for the syscall instruction defeats
the normal user-mode effects of single-step being enabled. In that event,
you want to call tracehook_report_syscall_exit() if single-step is enabled.
You must pass a nonzero second argument if your arch code is not going to
generate the normal SIGTRAP associated with having single-stepped into the
syscall instruction.
> sounds like this issue is unrelated to tracehook and how we've been
> doing signal/ptrace stuff has always been a little broken ...
Yes. It's related to tracehook in the sense that the tracehook interfaces
as described by the kerneldoc cover explicitly all the corners of the
semantics that were fuzzy or implicit in the ancient code. Getting all
these corners right for your arch makes sure that any future generic
features that differ from the ancient ptrace muck will behave as intended
on your arch without you having to go fix things up later on.
> i'll move it to how most arches seem to do it -- in do_signal after a
> successful call to handle_signal and after clearing
> TIF_RESTORE_SIGMASK.
That is correct.
Thanks,
Roland
next prev parent reply other threads:[~2010-02-12 3:24 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-02-02 18:57 [PATCH 1/14] move user_enable_single_step & co prototypes to linux/ptrace.h Christoph Hellwig
2010-02-02 18:58 ` [PATCH 2/14] alpha: use generic ptrace_resume code Christoph Hellwig
2010-02-03 4:35 ` Matt Turner
2010-02-02 18:58 ` [PATCH 3/14] arm: " Christoph Hellwig
2010-02-02 18:58 ` [PATCH 4/14] avr32: " Christoph Hellwig
2010-02-03 3:17 ` Haavard Skinnemoen
2010-02-03 8:36 ` Christoph Hellwig
2010-02-03 19:22 ` Oleg Nesterov
2010-02-03 19:28 ` Christoph Hellwig
2010-02-02 18:59 ` [PATCH 5/14] blackfin: " Christoph Hellwig
2010-02-02 20:29 ` Mike Frysinger
2010-02-03 19:36 ` Mike Frysinger
2010-02-03 19:42 ` Christoph Hellwig
2010-02-11 9:43 ` [PATCH 0/2] Blackfin: " Mike Frysinger
2010-02-11 9:43 ` [PATCH 1/2] Blackfin: initial tracehook support Mike Frysinger
2010-02-11 20:46 ` Roland McGrath
2010-02-11 23:54 ` Mike Frysinger
2010-02-12 3:24 ` Roland McGrath [this message]
2010-02-12 4:33 ` Mike Frysinger
2010-02-12 15:24 ` Oleg Nesterov
2010-02-12 20:44 ` Roland McGrath
2010-02-13 9:41 ` Mike Frysinger
2010-02-15 7:36 ` Mike Frysinger
2010-02-15 20:07 ` Roland McGrath
2010-02-11 9:43 ` [PATCH 2/2] Blackfin: use generic ptrace_resume code Mike Frysinger
2010-02-02 18:59 ` [PATCH 6/14] h8300: " Christoph Hellwig
2010-02-02 18:59 ` [PATCH 7/14] m68knommu: " Christoph Hellwig
2010-02-03 6:54 ` Greg Ungerer
2010-02-02 18:59 ` [PATCH 8/14] microblaze: " Christoph Hellwig
2010-02-03 11:00 ` Michal Simek
2010-02-02 18:59 ` [PATCH 9/14] mips: " Christoph Hellwig
2010-02-02 19:19 ` Ralf Baechle
2010-02-02 19:00 ` [PATCH 10/14] um: " Christoph Hellwig
2010-02-02 19:00 ` [PATCH 11/14] xtensa: " Christoph Hellwig
2010-02-02 19:00 ` [PATCH 12/14] cris arch-v10: " Christoph Hellwig
2010-02-02 19:00 ` [PATCH, RFC 13/14] cris arch-v32: " Christoph Hellwig
2010-02-02 19:00 ` [PATCH, RFC 14/14] m32r: " Christoph Hellwig
2010-02-03 8:42 ` [PATCH 1/14] move user_enable_single_step & co prototypes to linux/ptrace.h Mike Frysinger
2010-02-03 8:56 ` Christoph Hellwig
2010-02-08 10:50 ` David Howells
2010-02-08 19:51 ` Roland McGrath
2010-02-10 22:03 ` Christoph Hellwig
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=20100212032406.BE645C81B@magilla.sf.frob.com \
--to=roland@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=hch@lst.de \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=oleg@redhat.com \
--cc=uclinux-dist-devel@blackfin.uclinux.org \
--cc=vapier.adi@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®