diff options
author | Julien Thierry <julien.thierry@arm.com> | 2019-02-13 21:10:09 -0500 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2019-02-20 10:20:45 +0100 |
commit | 96d4881f04b916118a0f043360e52bdf51a58f15 (patch) | |
tree | ddc39dd0c92f0833f5afff5a09bbfc3d03dbb412 /arch/arm | |
parent | 6d3ccf78e2867718c400a0a0e773adac721a470b (diff) | |
download | linux-stable-96d4881f04b916118a0f043360e52bdf51a58f15.tar.gz linux-stable-96d4881f04b916118a0f043360e52bdf51a58f15.tar.bz2 linux-stable-96d4881f04b916118a0f043360e52bdf51a58f15.zip |
ARM: 8792/1: oabi-compat: copy oabi events using __copy_to_user()
Commit 319508902600c2688e057750148487996396e9ca upstream.
Copy events to user using __copy_to_user() rather than copy members of
individually with __put_user_error().
This has the benefit of disabling/enabling PAN once per event intead of
once per event member.
Signed-off-by: Julien Thierry <julien.thierry@arm.com>
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Signed-off-by: David A. Long <dave.long@linaro.org>
Reviewed-by: Julien Thierry <julien.thierry@arm.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/kernel/sys_oabi-compat.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c index 4abe4909417f..a87684532327 100644 --- a/arch/arm/kernel/sys_oabi-compat.c +++ b/arch/arm/kernel/sys_oabi-compat.c @@ -277,6 +277,7 @@ asmlinkage long sys_oabi_epoll_wait(int epfd, int maxevents, int timeout) { struct epoll_event *kbuf; + struct oabi_epoll_event e; mm_segment_t fs; long ret, err, i; @@ -295,8 +296,11 @@ asmlinkage long sys_oabi_epoll_wait(int epfd, set_fs(fs); err = 0; for (i = 0; i < ret; i++) { - __put_user_error(kbuf[i].events, &events->events, err); - __put_user_error(kbuf[i].data, &events->data, err); + e.events = kbuf[i].events; + e.data = kbuf[i].data; + err = __copy_to_user(events, &e, sizeof(e)); + if (err) + break; events++; } kfree(kbuf); |