Commit 130f7f92 authored by Stephen Rothwell's avatar Stephen Rothwell Committed by David S. Miller

[SPARC]: arch specific copy_siginfo_to_user no longer needed.

parent 96c935cb
...@@ -90,38 +90,6 @@ struct rt_signal_frame { ...@@ -90,38 +90,6 @@ struct rt_signal_frame {
__siginfo_fpu_t fpu_state; __siginfo_fpu_t fpu_state;
}; };
int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from)
{
if (!access_ok(VERIFY_WRITE, to, sizeof(siginfo_t)))
return -EFAULT;
if (from->si_code < 0)
return __copy_to_user(to, from, sizeof(siginfo_t));
else {
int err;
/* 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. */
err = __put_user(from->si_signo, &to->si_signo);
err |= __put_user(from->si_errno, &to->si_errno);
err |= __put_user((short)from->si_code, &to->si_code);
switch (from->si_code >> 16) {
case __SI_CHLD >> 16:
err |= __put_user(from->si_utime, &to->si_utime);
err |= __put_user(from->si_stime, &to->si_stime);
/* case __SI_RT: This is not generated by the kernel as of now. */
err |= __put_user(from->si_status, &to->si_status);
default:
err |= __put_user(from->si_uid, &to->si_uid);
err |= __put_user(from->si_pid, &to->si_pid);
break;
}
return err;
}
}
/* Align macros */ /* Align macros */
#define SF_ALIGNEDSZ (((sizeof(struct signal_sframe) + 7) & (~7))) #define SF_ALIGNEDSZ (((sizeof(struct signal_sframe) + 7) & (~7)))
#define NF_ALIGNEDSZ (((sizeof(struct new_signal_frame) + 7) & (~7))) #define NF_ALIGNEDSZ (((sizeof(struct new_signal_frame) + 7) & (~7)))
......
...@@ -36,38 +36,6 @@ ...@@ -36,38 +36,6 @@
static int do_signal(sigset_t *oldset, struct pt_regs * regs, static int do_signal(sigset_t *oldset, struct pt_regs * regs,
unsigned long orig_o0, int ret_from_syscall); unsigned long orig_o0, int ret_from_syscall);
int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from)
{
if (!access_ok (VERIFY_WRITE, to, sizeof(siginfo_t)))
return -EFAULT;
if (from->si_code < 0)
return __copy_to_user(to, from, sizeof(siginfo_t));
else {
int err;
/* 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. */
err = __put_user(*(long *)&from->si_signo, (long *)&to->si_signo);
err |= __put_user((short)from->si_code, &to->si_code);
switch (from->si_code >> 16) {
case __SI_CHLD >> 16:
err |= __put_user(from->si_utime, &to->si_utime);
err |= __put_user(from->si_stime, &to->si_stime);
case __SI_FAULT >> 16:
case __SI_POLL >> 16:
err |= __put_user(from->si_trapno, &to->si_trapno);
default:
err |= __put_user(from->si_addr, &to->si_addr);
break;
/* case __SI_RT: This is not generated by the kernel as of now. */
}
return err;
}
}
/* {set, get}context() needed for 64-bit SparcLinux userland. */ /* {set, get}context() needed for 64-bit SparcLinux userland. */
asmlinkage void sparc64_set_context(struct pt_regs *regs) asmlinkage void sparc64_set_context(struct pt_regs *regs)
{ {
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
#define __ARCH_SI_UID_T unsigned int #define __ARCH_SI_UID_T unsigned int
#define __ARCH_SI_TRAPNO #define __ARCH_SI_TRAPNO
#define HAVE_ARCH_COPY_SIGINFO_TO_USER
#include <asm-generic/siginfo.h> #include <asm-generic/siginfo.h>
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int)) #define __ARCH_SI_PREAMBLE_SIZE (4 * sizeof(int))
#define __ARCH_SI_TRAPNO #define __ARCH_SI_TRAPNO
#define HAVE_ARCH_COPY_SIGINFO_TO_USER
#include <asm-generic/siginfo.h> #include <asm-generic/siginfo.h>
......
...@@ -1427,6 +1427,9 @@ int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from) ...@@ -1427,6 +1427,9 @@ int copy_siginfo_to_user(siginfo_t *to, siginfo_t *from)
break; break;
case __SI_FAULT: case __SI_FAULT:
err |= __put_user(from->si_addr, &to->si_addr); err |= __put_user(from->si_addr, &to->si_addr);
#ifdef __ARCH_SI_TRAPNO
err |= __put_user(from->si_trapno, &to->si_trapno);
#endif
break; break;
case __SI_CHLD: case __SI_CHLD:
err |= __put_user(from->si_pid, &to->si_pid); err |= __put_user(from->si_pid, &to->si_pid);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment