Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 68c38fb6 authored by Al Viro's avatar Al Viro
Browse files

sparc: switch to {get,put}_compat_sigset()



slightly more complicated than usual, since old sigframe layout
on sparc keeps the first 32 bits of mask away from the rest

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent c60a03fe
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -248,7 +248,6 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
	compat_uptr_t fpu_save;
	compat_uptr_t rwin_save;
	sigset_t set;
	compat_sigset_t seta;
	int err, i;
	
	/* Always make any pending restarted system calls return -EINTR */
@@ -311,7 +310,7 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
	err |= __get_user(fpu_save, &sf->fpu_save);
	if (!err && fpu_save)
		err |= restore_fpu_state(regs, compat_ptr(fpu_save));
	err |= copy_from_user(&seta, &sf->mask, sizeof(compat_sigset_t));
	err |= get_compat_sigset(&set, &sf->mask);
	err |= compat_restore_altstack(&sf->stack);
	if (err)
		goto segv;
@@ -322,7 +321,6 @@ asmlinkage void do_rt_sigreturn32(struct pt_regs *regs)
			goto segv;
	}

	set.sig[0] = seta.sig[0] + (((long)seta.sig[1]) << 32);
	set_current_blocked(&set);
	return;
segv:
@@ -554,7 +552,6 @@ static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs,
	void __user *tail;
	int sigframe_size;
	u32 psr;
	compat_sigset_t seta;

	/* 1. Make sure everything is clean */
	synchronize_user_stack();
@@ -624,9 +621,7 @@ static int setup_rt_frame32(struct ksignal *ksig, struct pt_regs *regs,
	/* Setup sigaltstack */
	err |= __compat_save_altstack(&sf->stack, regs->u_regs[UREG_FP]);

	seta.sig[1] = (oldset->sig[0] >> 32);
	seta.sig[0] = oldset->sig[0];
	err |= __copy_to_user(&sf->mask, &seta, sizeof(compat_sigset_t));
	err |= put_compat_sigset(&sf->mask, oldset, sizeof(compat_sigset_t));

	if (!wsaved) {
		err |= copy_in_user((u32 __user *)sf,