mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-23 07:12:09 +00:00
s390/compat,signal: change return values to -EFAULT
Instead of returnin the number of bytes not copied and/or -EFAULT let the signal handler helper functions always return -EFAULT if a user space access failed. This doesn't fix a bug in the current code, but makes is harder to get it wrong in the future. Also "smatch" won't complain anymore about the fact that the number of remaining bytes gets returned instead of -EFAULT. Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com> Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
parent
f5be85a2d3
commit
f8544ec4f4
2 changed files with 19 additions and 17 deletions
|
@ -70,21 +70,20 @@ static int save_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
|
|||
save_fp_regs(¤t->thread.fp_regs);
|
||||
memcpy(&user_sregs.fpregs, ¤t->thread.fp_regs,
|
||||
sizeof(s390_fp_regs));
|
||||
return __copy_to_user(sregs, &user_sregs, sizeof(_sigregs));
|
||||
if (__copy_to_user(sregs, &user_sregs, sizeof(_sigregs)))
|
||||
return -EFAULT;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Returns positive number on error */
|
||||
static int restore_sigregs(struct pt_regs *regs, _sigregs __user *sregs)
|
||||
{
|
||||
int err;
|
||||
_sigregs user_sregs;
|
||||
|
||||
/* Alwys make any pending restarted system call return -EINTR */
|
||||
current_thread_info()->restart_block.fn = do_no_restart_syscall;
|
||||
|
||||
err = __copy_from_user(&user_sregs, sregs, sizeof(_sigregs));
|
||||
if (err)
|
||||
return err;
|
||||
if (__copy_from_user(&user_sregs, sregs, sizeof(_sigregs)))
|
||||
return -EFAULT;
|
||||
/* Use regs->psw.mask instead of PSW_USER_BITS to preserve PER bit. */
|
||||
regs->psw.mask = (regs->psw.mask & ~PSW_MASK_USER) |
|
||||
(user_sregs.regs.psw.mask & PSW_MASK_USER);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue