arch: remove compat_alloc_user_space
[linux-2.6-microblaze.git] / arch / sparc / kernel / signal32.c
index e9695a0..6cc124a 100644 (file)
@@ -435,9 +435,9 @@ static int setup_frame32(struct ksignal *ksig, struct pt_regs *regs,
                              (_COMPAT_NSIG_WORDS - 1) * sizeof(unsigned int));
 
        if (!wsaved) {
-               err |= copy_in_user((u32 __user *)sf,
-                                   (u32 __user *)(regs->u_regs[UREG_FP]),
-                                   sizeof(struct reg_window32));
+               err |= raw_copy_in_user((u32 __user *)sf,
+                                       (u32 __user *)(regs->u_regs[UREG_FP]),
+                                       sizeof(struct reg_window32));
        } else {
                struct reg_window *rp;
 
@@ -567,9 +567,9 @@ static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs,
        err |= put_compat_sigset(&sf->mask, oldset, sizeof(compat_sigset_t));
 
        if (!wsaved) {
-               err |= copy_in_user((u32 __user *)sf,
-                                   (u32 __user *)(regs->u_regs[UREG_FP]),
-                                   sizeof(struct reg_window32));
+               err |= raw_copy_in_user((u32 __user *)sf,
+                                       (u32 __user *)(regs->u_regs[UREG_FP]),
+                                       sizeof(struct reg_window32));
        } else {
                struct reg_window *rp;
 
@@ -745,3 +745,40 @@ asmlinkage int do_sys32_sigstack(u32 u_ssptr, u32 u_ossptr, unsigned long sp)
 out:
        return ret;
 }
+
+/*
+ * 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_trapno)    == 0x10);
+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);