Thread (53 messages) 53 messages, 9 authors, 2012-02-29

Re: [PATCH v11 08/12] signal, x86: add SIGSYS info and make it synchronous.

From: Oleg Nesterov <oleg@redhat.com>
Date: 2012-02-28 16:10:48
Also in: linux-arch, lkml

On 02/27, Will Drewry wrote:
On Mon, Feb 27, 2012 at 11:22 AM, Oleg Nesterov [off-list ref] wrote:
quoted
On 02/24, Will Drewry wrote:
quoted
To ensure that SIGSYS delivery occurs on return from the triggering
system call, SIGSYS is added to the SYNCHRONOUS_MASK macro.
Hmm. Can't understand... please help.
quoted
 #define SYNCHRONOUS_MASK \
      (sigmask(SIGSEGV) | sigmask(SIGBUS) | sigmask(SIGILL) | \
-      sigmask(SIGTRAP) | sigmask(SIGFPE))
+      sigmask(SIGTRAP) | sigmask(SIGFPE) | sigmask(SIGSYS))
Why?

SYNCHRONOUS_MASK just tells dequeue_signal() "pick them first".
This is needed to make sure that the handler for, say SIGSEGV,
can use ucontext->ip as a faulting addr.
I think that Roland covered this.  (Since the syscall_rollback was
called it's nice to let our handler get first go.)
OK, except I do not really understand the "our handler get first go".

Suppose SIGSYS "races" with the pending SIGHUP. With this change
the caller for SIGHUP will be called first. But yes, setup_frame()
will be called for SIGSYS first. Hopefully this is what you want.
quoted
But seccomp adds info->si_call_addr, this looks unneeded.
True enough.  I can drop it.
Hmm. I meant, the change in SYNCHRONOUS_MASK looks unneeded. Please
keep ->si_call_addr, it is much more convenient than ucontext_t in
userspace.
It'd only be useful if the SIGSYS wasn't
being forced and the signal was being handled without ucontext_t
access.
No, force_ doesn't make any difference in this sense...

In short, the patch looks fine to me, but if you resend it may be
you can update the changelog.

Oleg.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help