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> Signed-off-by: Ard Biesheuvel <ardb@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
8d81dfc050
commit
b905a10fd9
1 changed files with 6 additions and 2 deletions
|
@ -276,6 +276,7 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,
|
||||||
int maxevents, int timeout)
|
int maxevents, int timeout)
|
||||||
{
|
{
|
||||||
struct epoll_event *kbuf;
|
struct epoll_event *kbuf;
|
||||||
|
struct oabi_epoll_event e;
|
||||||
mm_segment_t fs;
|
mm_segment_t fs;
|
||||||
long ret, err, i;
|
long ret, err, i;
|
||||||
|
|
||||||
|
@ -294,8 +295,11 @@ asmlinkage long sys_oabi_epoll_wait(int epfd,
|
||||||
set_fs(fs);
|
set_fs(fs);
|
||||||
err = 0;
|
err = 0;
|
||||||
for (i = 0; i < ret; i++) {
|
for (i = 0; i < ret; i++) {
|
||||||
__put_user_error(kbuf[i].events, &events->events, err);
|
e.events = kbuf[i].events;
|
||||||
__put_user_error(kbuf[i].data, &events->data, err);
|
e.data = kbuf[i].data;
|
||||||
|
err = __copy_to_user(events, &e, sizeof(e));
|
||||||
|
if (err)
|
||||||
|
break;
|
||||||
events++;
|
events++;
|
||||||
}
|
}
|
||||||
kfree(kbuf);
|
kfree(kbuf);
|
||||||
|
|
Loading…
Add table
Reference in a new issue