Messages in this thread | | | Subject | Re: [PATCH 4/4] sigaltstack: allow disabling and re-enabling sas within sighandler | From | Stas Sergeev <> | Date | Mon, 1 Feb 2016 21:40:52 +0300 |
| |
01.02.2016 21:28, Andy Lutomirski пишет: > On Mon, Feb 1, 2016 at 10:16 AM, Stas Sergeev <stsp@list.ru> wrote: >> 01.02.2016 21:04, Oleg Nesterov пишет: >>> 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. >> >>> I won't argue, but to me it would be better to keep this EPERM if !force. >>> Just because we should avoid the incompatible changes if possible. >> Ok then. Lets implement SS_FORCE. >> What semantic should it have wrt uc_stack? >> >> sigaltstack(SS_DISABLE | SS_FORCE); >> swapcontext(); >> sigaltstack(set up new_sas); >> rt_sigreturn(); >> >> What's at the end? Do we want a surprise for the user >> that he's new_sas got ignored? > More detail please. What context are you returning to with > rt_sigreturn? What's in uc_stack? Whatever was saved there by save_altstack_ex() I guess. Which is the sas params on signal entry. And I am returning to the interrupted user context. I am using SA_SIGINFO with sigaction(). This is actually what I was asking you already yeaterday. I don't think SS_FORCE can play nicely with uc_stack and you haven't clarified that part, so lets try again.
> Presumably we should continue to honor uc_stack in rt_sigreturn. In this case, the above sigaltstack(set up new_sas) just gets ignored. Are we allright with that? If so, I can code up the patch. Whatever. :)
> I'm > less clear on whether we should have an implicit SS_FORCE when > restoring uc_stack. This is obscure and is likely outside of the scope of the problem at hands.
> I'm also not clear on why uc_stack exists in the > first place. > > If I were designing this from scratch, I'd have signal delivery for an > SA_ONSTACK signal save away the altstack information and clear it so > that nested signals work without checking sp during signal delivery. How would you then evaluate oss->ss_flags?
| |