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 <hidden>
Date: 2016-02-01 17:27:41
Also in: lkml

On 02/01, Stas Sergeev wrote:
quoted
So the sequence is

// running on alt stack

sigaltstack(SS_DISABLE);

temporary_run_on_another_stack();

sigaltstack(SS_ONSTACK);

and SS_DISABLE saves us from another SA_ONSTACK signal, right?
Yes.
Note: there is a test-case in that patch serie from which
you can see or copy/paste the sample code.
OK, I wasn't cc'ed
quoted
But afaics it can only help after we change the stack. Suppose that SA_ONSTACK signal
comess before temporary_run_on_another_stack(). get_sigframe() should be fine after
your changes (afaics), it won't pick the alt stack after SS_DISABLE.

However, unless I missed something save_altstack_ex() will record SS_ONSTACK in
uc_stack->ss_flags, and after return from signal handler restore_altstack() will
enable alt stack again?
I don't think so. Please see the following hunk:
Yes, see another email, I already noticed this change.
So I understand this is very confusing, but I think the patch
is correct.
Not sure, but I can hardly read this patch and I can't apply it.
Do you think adding the SS_FORCE flag would be a better solution?
Yes, certainly. I see no point to remember that a thread actually has the alt stack
but it was disabled.

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