Merge tag 'dt-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / arch / arm64 / kernel / signal32.c
index 2f507f5..d984282 100644 (file)
@@ -46,8 +46,6 @@ struct compat_aux_sigframe {
        unsigned long                   end_magic;
 } __attribute__((__aligned__(8)));
 
-#define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP)))
-
 static inline int put_sigset_t(compat_sigset_t __user *uset, sigset_t *set)
 {
        compat_sigset_t cset;
@@ -190,10 +188,8 @@ static int compat_restore_sigframe(struct pt_regs *regs,
        unsigned long psr;
 
        err = get_sigset_t(&set, &sf->uc.uc_sigmask);
-       if (err == 0) {
-               sigdelsetmask(&set, ~_BLOCKABLE);
+       if (err == 0)
                set_current_blocked(&set);
-       }
 
        __get_user_error(regs->regs[0], &sf->uc.uc_mcontext.arm_r0, err);
        __get_user_error(regs->regs[1], &sf->uc.uc_mcontext.arm_r1, err);
@@ -457,3 +453,42 @@ void compat_setup_restart_syscall(struct pt_regs *regs)
 {
        regs->regs[7] = __NR_compat_restart_syscall;
 }
+
+/*
+ * Compile-time assertions for siginfo_t offsets. Check NSIG* as well, as
+ * changes likely come with new fields that should be added below.
+ */
+static_assert(NSIGILL  == 11);
+static_assert(NSIGFPE  == 15);
+static_assert(NSIGSEGV == 9);
+static_assert(NSIGBUS  == 5);
+static_assert(NSIGTRAP == 6);
+static_assert(NSIGCHLD == 6);
+static_assert(NSIGSYS  == 2);
+static_assert(sizeof(compat_siginfo_t) == 128);
+static_assert(__alignof__(compat_siginfo_t) == 4);
+static_assert(offsetof(compat_siginfo_t, si_signo)     == 0x00);
+static_assert(offsetof(compat_siginfo_t, si_errno)     == 0x04);
+static_assert(offsetof(compat_siginfo_t, si_code)      == 0x08);
+static_assert(offsetof(compat_siginfo_t, si_pid)       == 0x0c);
+static_assert(offsetof(compat_siginfo_t, si_uid)       == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_tid)       == 0x0c);
+static_assert(offsetof(compat_siginfo_t, si_overrun)   == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_status)    == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_utime)     == 0x18);
+static_assert(offsetof(compat_siginfo_t, si_stime)     == 0x1c);
+static_assert(offsetof(compat_siginfo_t, si_value)     == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_int)       == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_ptr)       == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_addr)      == 0x0c);
+static_assert(offsetof(compat_siginfo_t, si_addr_lsb)  == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_lower)     == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_upper)     == 0x18);
+static_assert(offsetof(compat_siginfo_t, si_pkey)      == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_perf_data) == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_perf_type) == 0x14);
+static_assert(offsetof(compat_siginfo_t, si_band)      == 0x0c);
+static_assert(offsetof(compat_siginfo_t, si_fd)                == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_call_addr) == 0x0c);
+static_assert(offsetof(compat_siginfo_t, si_syscall)   == 0x10);
+static_assert(offsetof(compat_siginfo_t, si_arch)      == 0x14);