Thread (28 messages) 28 messages, 4 authors, 2016-02-12

Re: [PATCH 4/4] sigaltstack: allow disabling and re-enabling sas within sighandler

From: Oleg Nesterov <oleg@redhat.com>
Date: 2016-02-01 19:29:44
Also in: lkml

On 02/01, Stas Sergeev wrote:
01.02.2016 21:52, Oleg Nesterov пишет:
quoted
Stas, I probably missed something, but I don't understand your concerns,

On 02/01, Stas Sergeev wrote:
quoted
01.02.2016 21:04, Oleg Nesterov пишет:
quoted
Yes, and SS_FORCE means "I know what I do", looks very simple.
But to me its not because I don't know what to do with
uc_stack after SS_FORCE is applied.
Nothing? restore_sigaltstack() should work as expected?
That's likely the reason for EPERM: restore_sigaltstack()
does the job, so manual modifications are disallowed.
Allowing them will bring in the surprises where the changes
done by the user are ignored.
Unlikely. Suppose you do sigalstack() and then a non SA_ONSTACK signal handler
runs and calls sigaltstack() again. This won't fail, but restore_sigaltstack()
will restore the old alt stack after return.

I too do not know why uc_stack exists, in fact I do not know about it until
today when I read your patch ;) But it is here, and I do not think SS_FORCE
can add more confusion than we already have.
quoted
Yes, or

sigaltstack({ DISABLE | FORCE}, &old_ss);
swapcontext();
sigaltstack(&old_ss, NULL);
rt_sigreturn();

and if you are going to return from sighandler you do not even need the 2nd
sigaltstack(), you can rely on sigreturn.
Yes, that's what I do in my app already.
But its only there when SA_SIGINFO is used.
Hmm. how this connects to SA_SIGINFO ?
quoted
quoted
What's at the end? Do we want a surprise for the user
that he's new_sas got ignored?
Can't understand.... do you mean "set up new_sas" will be ignored because
rt_sigreturn() does restore_sigaltstack() ? I see no problem here...
Allowing the modifications that were previously EPERMed
but will now be silently ignored, may be seen as a problem.
But if it isn't - fine, lets code that.
Still can't understand. The 2nd sigaltstack() is no longer EPERMed because
application used SS_FORCED before that and disabled altstack.

And it is not ignored, it actually changes alt stack. Until we return from
handler.

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