On Tue, May 3, 2016 at 12:50 AM, tip-bot for Stas Sergeev <[email protected]> wrote: > Commit-ID: 2a74213838104a41588d86fd5e8d344972891ace > Gitweb: http://git.kernel.org/tip/2a74213838104a41588d86fd5e8d344972891ace > Author: Stas Sergeev <[email protected]> > AuthorDate: Thu, 14 Apr 2016 23:20:04 +0300 > Committer: Ingo Molnar <[email protected]> > CommitDate: Tue, 3 May 2016 08:37:59 +0200 > > signals/sigaltstack: Implement SS_AUTODISARM flag > > This patch implements the SS_AUTODISARM flag that can be OR-ed with > SS_ONSTACK when forming ss_flags. > > When this flag is set, sigaltstack will be disabled when entering > the signal handler; more precisely, after saving sas to uc_stack. > When leaving the signal handler, the sigaltstack is restored by > uc_stack. > > When this flag is used, it is safe to switch from sighandler with > swapcontext(). Without this flag, the subsequent signal will corrupt > the state of the switched-away sighandler. > > To detect the support of this functionality, one can do: > > err = sigaltstack(SS_DISABLE | SS_AUTODISARM); > if (err && errno == EINVAL) > unsupported();
One of my review comments from last time got lost, I think. I'll send a followup patch. > +/* bit-flags */ > +#define SS_AUTODISARM (1 << 4) /* disable sas during sighandling */ Before this gets enshrined as ABI, could we perhaps change this to (1 << 31)? I don't see why we should pick a bit in the middle of the field as our first flag bit. --Andy

