On Sat, Feb 4, 2017 at 4:07 AM, Stas Sergeev <[email protected]> wrote: > Currently SS_AUTODISARM is not supported in compatibility > mode, but does not return -EINVAL either. This makes dosemu > built with -m32 on x86_64 to crash. Also the kernel's sigaltstack > selftest fails if compiled with -m32. > > This patch adds the needed support. It also improves the > selftest output a little (%i changed to %x for bitmasks). > > Signed-off-by: Stas Sergeev <[email protected]> >
Spurious newline. Also, should this be cc:stable? > CC: Shuah Khan <[email protected]> > CC: Andrew Morton <[email protected]> > CC: Jiri Kosina <[email protected]> > CC: Al Viro <[email protected]> > CC: Stephen Bates <[email protected]> > CC: Milosz Tanski <[email protected]> > CC: Andy Lutomirski <[email protected]> > CC: Ingo Molnar <[email protected]> > CC: "Peter Zijlstra (Intel)" <[email protected]> > CC: Helge Deller <[email protected]> > CC: Wang Xiaoqiang <[email protected]> > CC: Dave Hansen <[email protected]> > CC: Sasha Levin <[email protected]> > CC: [email protected] > --- > include/linux/compat.h | 4 +++- > kernel/signal.c | 11 +++++++++-- > tools/testing/selftests/sigaltstack/sas.c | 7 ++++--- > 3 files changed, 16 insertions(+), 6 deletions(-) > > diff --git a/include/linux/compat.h b/include/linux/compat.h > index 6360939..d8535a4 100644 > --- a/include/linux/compat.h > +++ b/include/linux/compat.h > @@ -711,8 +711,10 @@ int __compat_save_altstack(compat_stack_t __user *, > unsigned long); > compat_stack_t __user *__uss = uss; \ > struct task_struct *t = current; \ > put_user_ex(ptr_to_compat((void __user *)t->sas_ss_sp), > &__uss->ss_sp); \ > - put_user_ex(sas_ss_flags(sp), &__uss->ss_flags); \ > + put_user_ex(t->sas_ss_flags, &__uss->ss_flags); \ Should the sas_ss_flags() helper be deleted, perhaps? This code seems a bit odd -- it no longer does the on_sig_stack(sp) check.. (It matches the non-compat code.)

