Message ID | 20180416204132.9251-1-aurelien@aurel32.net |
---|---|
State | New |
Headers | show |
Series | [2.27] RISC-V: fix struct kernel_sigaction to match the kernel version [BZ #23069] | expand |
On 2018-04-16 17:54, DJ Delorie wrote: > > Could the #ifdef from b4a5d26d8835's kernel_sigaction.h be backported > instead? It still wouldn't be a pristine backport (I'm not recommending > backporting *all* of b4a5d26d8835) but at least as branch-specific > 'hack' it's closer to what's in master than a riscv-specific header. We can backport that #ifdef from b4a5d26d8835, but it means we also need to backport the new kernel_sigaction.h files for m68k, s390, sparc, tile (if I haven't missed any), plus commit d8abfab7d46a to fix a regression on s390. So it seems more risky to me. Also note that this is not an installed header, but just a compile time header.
On Mon, 16 Apr 2018, Aurelien Jarno wrote: > The RISC-V kernel doesn't define SA_RESTORER, hence the kernel version > of struct sigaction doesn't have the sa_restorer field. The default > kernel_sigaction.h therefore can't be used. > > This patch adds a RISC-V specific version of kernel_sigaction.h to fix > the issue. This fixes for example the libnih testsuite. I think there ought to be a relevant test added to the glibc testsuite (on master and backported) if there isn't one already, unless it's hard to test this issue for some reason.
On Mon, Apr 16, 2018 at 10:41:32PM +0200, Aurelien Jarno wrote: > The RISC-V kernel doesn't define SA_RESTORER, hence the kernel version > of struct sigaction doesn't have the sa_restorer field. The default > kernel_sigaction.h therefore can't be used. > > This patch adds a RISC-V specific version of kernel_sigaction.h to fix > the issue. This fixes for example the libnih testsuite. > > Note that this patch is not needed in master as the bug has been fixed > by commit b4a5d26d8835 ("linux: Consolidate sigaction implementation"). > --- > ChangeLog | 5 +++++ > sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h | 7 +++++++ > 2 files changed, 12 insertions(+) > create mode 100644 sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h > > diff --git a/ChangeLog b/ChangeLog > index 536fcf1c4f..f365475a47 100644 > --- a/ChangeLog > +++ b/ChangeLog > @@ -1,3 +1,8 @@ > +2018-04-16 Aurelien Jarno <aurelien@aurel32.net> > + > + [BZ #23069] > + * sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h: New file. > + > 2018-03-29 Florian Weimer <fweimer@redhat.com> > > * sysdeps/unix/sysv/linux/i386/tst-bz21269.c (do_test): Also > diff --git a/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h b/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h > new file mode 100644 > index 0000000000..2a62bcc5bc > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h > @@ -0,0 +1,7 @@ > +/* This is the sigaction structure from the RISC-V Linux 4.15 kernel. */ > + > +struct kernel_sigaction { > + __sighandler_t k_sa_handler; > + unsigned long sa_flags; > + sigset_t sa_mask; > +}; I think this is OK given that b4a5d26d8835 cannot be easily backported to 2.27.
diff --git a/ChangeLog b/ChangeLog index 536fcf1c4f..f365475a47 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2018-04-16 Aurelien Jarno <aurelien@aurel32.net> + + [BZ #23069] + * sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h: New file. + 2018-03-29 Florian Weimer <fweimer@redhat.com> * sysdeps/unix/sysv/linux/i386/tst-bz21269.c (do_test): Also diff --git a/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h b/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h new file mode 100644 index 0000000000..2a62bcc5bc --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/kernel_sigaction.h @@ -0,0 +1,7 @@ +/* This is the sigaction structure from the RISC-V Linux 4.15 kernel. */ + +struct kernel_sigaction { + __sighandler_t k_sa_handler; + unsigned long sa_flags; + sigset_t sa_mask; +};