Merge branch 'siginfo-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ebieder...
[sfrench/cifs-2.6.git] / arch / arm64 / kernel / signal32.c
index a124140c0926c51ab7fd2d9f9dd3ba3e099f6090..79feb861929b93828a619ff0df941d01aa02b270 100644 (file)
@@ -125,86 +125,6 @@ static inline int get_sigset_t(sigset_t *set,
        return 0;
 }
 
-int copy_siginfo_to_user32(compat_siginfo_t __user *to, const siginfo_t *from)
-{
-       int err;
-
-       if (!access_ok(VERIFY_WRITE, to, sizeof(*to)))
-               return -EFAULT;
-
-       /* If you change siginfo_t structure, please be sure
-        * this code is fixed accordingly.
-        * It should never copy any pad contained in the structure
-        * to avoid security leaks, but must copy the generic
-        * 3 ints plus the relevant union member.
-        * This routine must convert siginfo from 64bit to 32bit as well
-        * at the same time.
-        */
-       err = __put_user(from->si_signo, &to->si_signo);
-       err |= __put_user(from->si_errno, &to->si_errno);
-       err |= __put_user(from->si_code, &to->si_code);
-       if (from->si_code < 0)
-               err |= __copy_to_user(&to->_sifields._pad, &from->_sifields._pad,
-                                     SI_PAD_SIZE);
-       else switch (siginfo_layout(from->si_signo, from->si_code)) {
-       case SIL_KILL:
-               err |= __put_user(from->si_pid, &to->si_pid);
-               err |= __put_user(from->si_uid, &to->si_uid);
-               break;
-       case SIL_TIMER:
-                err |= __put_user(from->si_tid, &to->si_tid);
-                err |= __put_user(from->si_overrun, &to->si_overrun);
-                err |= __put_user(from->si_int, &to->si_int);
-               break;
-       case SIL_POLL:
-               err |= __put_user(from->si_band, &to->si_band);
-               err |= __put_user(from->si_fd, &to->si_fd);
-               break;
-       case SIL_FAULT:
-               err |= __put_user((compat_uptr_t)(unsigned long)from->si_addr,
-                                 &to->si_addr);
-#ifdef BUS_MCEERR_AO
-               /*
-                * Other callers might not initialize the si_lsb field,
-                * so check explicitly for the right codes here.
-                */
-               if (from->si_signo == SIGBUS &&
-                   (from->si_code == BUS_MCEERR_AR || from->si_code == BUS_MCEERR_AO))
-                       err |= __put_user(from->si_addr_lsb, &to->si_addr_lsb);
-#endif
-               break;
-       case SIL_CHLD:
-               err |= __put_user(from->si_pid, &to->si_pid);
-               err |= __put_user(from->si_uid, &to->si_uid);
-               err |= __put_user(from->si_status, &to->si_status);
-               err |= __put_user(from->si_utime, &to->si_utime);
-               err |= __put_user(from->si_stime, &to->si_stime);
-               break;
-       case SIL_RT:
-               err |= __put_user(from->si_pid, &to->si_pid);
-               err |= __put_user(from->si_uid, &to->si_uid);
-               err |= __put_user(from->si_int, &to->si_int);
-               break;
-       case SIL_SYS:
-               err |= __put_user((compat_uptr_t)(unsigned long)
-                               from->si_call_addr, &to->si_call_addr);
-               err |= __put_user(from->si_syscall, &to->si_syscall);
-               err |= __put_user(from->si_arch, &to->si_arch);
-               break;
-       }
-       return err;
-}
-
-int copy_siginfo_from_user32(siginfo_t *to, compat_siginfo_t __user *from)
-{
-       if (copy_from_user(to, from, __ARCH_SI_PREAMBLE_SIZE) ||
-           copy_from_user(to->_sifields._pad,
-                          from->_sifields._pad, SI_PAD_SIZE))
-               return -EFAULT;
-
-       return 0;
-}
-
 /*
  * VFP save/restore code.
  *