mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-12 16:58:53 +00:00
[MIPS] signal: Fix warnings in o32 compat code.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
af3d10d52d
commit
dd02f06aa9
@ -139,8 +139,20 @@ struct ucontext32 {
|
|||||||
sigset_t32 uc_sigmask; /* mask last for extensibility */
|
sigset_t32 uc_sigmask; /* mask last for extensibility */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Horribly complicated - with the bloody RM9000 workarounds enabled
|
||||||
|
* the signal trampolines is moving to the end of the structure so we can
|
||||||
|
* increase the alignment without breaking software compatibility.
|
||||||
|
*/
|
||||||
#if ICACHE_REFILLS_WORKAROUND_WAR == 0
|
#if ICACHE_REFILLS_WORKAROUND_WAR == 0
|
||||||
|
|
||||||
|
struct sigframe32 {
|
||||||
|
u32 sf_ass[4]; /* argument save space for o32 */
|
||||||
|
u32 sf_code[2]; /* signal trampoline */
|
||||||
|
struct sigcontext32 sf_sc;
|
||||||
|
sigset_t sf_mask;
|
||||||
|
};
|
||||||
|
|
||||||
struct rt_sigframe32 {
|
struct rt_sigframe32 {
|
||||||
u32 rs_ass[4]; /* argument save space for o32 */
|
u32 rs_ass[4]; /* argument save space for o32 */
|
||||||
u32 rs_code[2]; /* signal trampoline */
|
u32 rs_code[2]; /* signal trampoline */
|
||||||
@ -150,6 +162,14 @@ struct rt_sigframe32 {
|
|||||||
|
|
||||||
#else /* ICACHE_REFILLS_WORKAROUND_WAR */
|
#else /* ICACHE_REFILLS_WORKAROUND_WAR */
|
||||||
|
|
||||||
|
struct sigframe32 {
|
||||||
|
u32 sf_ass[4]; /* argument save space for o32 */
|
||||||
|
u32 sf_pad[2];
|
||||||
|
struct sigcontext32 sf_sc; /* hw context */
|
||||||
|
sigset_t sf_mask;
|
||||||
|
u32 sf_code[8] ____cacheline_aligned; /* signal trampoline */
|
||||||
|
};
|
||||||
|
|
||||||
struct rt_sigframe32 {
|
struct rt_sigframe32 {
|
||||||
u32 rs_ass[4]; /* argument save space for o32 */
|
u32 rs_ass[4]; /* argument save space for o32 */
|
||||||
u32 rs_pad[2];
|
u32 rs_pad[2];
|
||||||
@ -493,10 +513,10 @@ int copy_siginfo_to_user32(compat_siginfo_t __user *to, siginfo_t *from)
|
|||||||
|
|
||||||
asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs)
|
asmlinkage void sys32_sigreturn(nabi_no_regargs struct pt_regs regs)
|
||||||
{
|
{
|
||||||
struct sigframe __user *frame;
|
struct sigframe32 __user *frame;
|
||||||
sigset_t blocked;
|
sigset_t blocked;
|
||||||
|
|
||||||
frame = (struct sigframe __user *) regs.regs[29];
|
frame = (struct sigframe32 __user *) regs.regs[29];
|
||||||
if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
|
if (!access_ok(VERIFY_READ, frame, sizeof(*frame)))
|
||||||
goto badframe;
|
goto badframe;
|
||||||
if (__copy_from_user(&blocked, &frame->sf_mask, sizeof(blocked)))
|
if (__copy_from_user(&blocked, &frame->sf_mask, sizeof(blocked)))
|
||||||
@ -581,7 +601,7 @@ badframe:
|
|||||||
int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
|
int setup_frame_32(struct k_sigaction * ka, struct pt_regs *regs,
|
||||||
int signr, sigset_t *set)
|
int signr, sigset_t *set)
|
||||||
{
|
{
|
||||||
struct sigframe __user *frame;
|
struct sigframe32 __user *frame;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
|
|
||||||
frame = get_sigframe(ka, regs, sizeof(*frame));
|
frame = get_sigframe(ka, regs, sizeof(*frame));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user