diff options
| author | Wang Qing <wangqing@vivo.com> | 2021-03-01 20:05:48 +0800 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-04-21 12:56:13 +0200 |
| commit | 47d04c039915346993330ebbd4dfe028001d016b (patch) | |
| tree | 745d327edade3e2f96bcb337fcb7ca7d8b2b5c9a /arch/arc | |
| parent | 68bd0d8ab19ecefeb591baa4d8c3fe3f9852792f (diff) | |
| download | linux-47d04c039915346993330ebbd4dfe028001d016b.tar.gz linux-47d04c039915346993330ebbd4dfe028001d016b.tar.bz2 linux-47d04c039915346993330ebbd4dfe028001d016b.zip | |
arc: kernel: Return -EFAULT if copy_to_user() fails
[ Upstream commit 46e152186cd89d940b26726fff11eb3f4935b45a ]
The copy_to_user() function returns the number of bytes remaining to be
copied, but we want to return -EFAULT if the copy doesn't complete.
Signed-off-by: Wang Qing <wangqing@vivo.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'arch/arc')
| -rw-r--r-- | arch/arc/kernel/signal.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/arch/arc/kernel/signal.c b/arch/arc/kernel/signal.c index 3d57ed0d8535..404518051093 100644 --- a/arch/arc/kernel/signal.c +++ b/arch/arc/kernel/signal.c @@ -96,7 +96,7 @@ stash_usr_regs(struct rt_sigframe __user *sf, struct pt_regs *regs, sizeof(sf->uc.uc_mcontext.regs.scratch)); err |= __copy_to_user(&sf->uc.uc_sigmask, set, sizeof(sigset_t)); - return err; + return err ? -EFAULT : 0; } static int restore_usr_regs(struct pt_regs *regs, struct rt_sigframe __user *sf) @@ -110,7 +110,7 @@ static int restore_usr_regs(struct pt_regs *regs, struct rt_sigframe __user *sf) &(sf->uc.uc_mcontext.regs.scratch), sizeof(sf->uc.uc_mcontext.regs.scratch)); if (err) - return err; + return -EFAULT; set_current_blocked(&set); regs->bta = uregs.scratch.bta; |
