[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20101011220224.GM19804@ZenIV.linux.org.uk>
Date: Mon, 11 Oct 2010 23:02:24 +0100
From: Al Viro <viro@...IV.linux.org.uk>
To: Andreas Schwab <schwab@...ux-m68k.org>
Cc: Thorsten Glaser <tg@...bsd.de>, linux-kernel@...r.kernel.org,
linux-m68k@...r.kernel.org
Subject: Re: aranym bug, manifests as "ida_remove called for id=13" on recent
kernels
On Mon, Oct 11, 2010 at 03:24:28PM +0100, Al Viro wrote:
> BTW, any comments on signal patchset? Seems to work here, including the
> stack expansion fixes, but that's on aranym. I'll try to resurrect the
> real hardware, but that may take a while. If somebody could give it a beating
> in the meanwhile...
Oh, lovely... One more signal bug (and a lot more on m68knommu): if we
strace a process and signal is delivered during pagefault handling, you'll
lose the second call of syscall_trace() on sigreturn(). If the signal
is delivered during a syscall or during an interrupt, syscall_trace() is
called twice on sigreturn() (as it does on all platforms). Fortunately,
that's easy to fix - same as on alpha (calling syscall_trace in ret_from_signal
if we are getting traced, just before doing RESTORE_SWITCH_STACK). Will test
and post...
FWIW, on other targets we either have sys_{rt,}_sigreturn() done as normal
functons (in which case the normal logics will take care of that), or
have them return to place in (common) syscall exit path earlier than
conditional call of syscall trace (mips, score), or check flags and do
call ourselves (sparc, alpha since it had been fixed). AFAICS, m68k and
m68knommu are the only ones buggered that way. On alpha we used to have
it even worse - there we did only one call on sigreturn() unconditionally...
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists