summaryrefslogtreecommitdiffstats
path: root/arch/arm/kernel/sys_oabi-compat.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@armlinux.org.uk>2020-04-03 11:06:47 +0100
committerRussell King <rmk+kernel@armlinux.org.uk>2020-04-21 17:49:30 +0100
commitc281634c865202e2776b0250678ff93c771947ff (patch)
tree2aa30ad93d95c8f63cc003baaa8065414f257967 /arch/arm/kernel/sys_oabi-compat.c
parent8f3d9f354286745c751374f5f1fcafee6b3f3136 (diff)
downloadlinux-c281634c865202e2776b0250678ff93c771947ff.tar.bz2
ARM: compat: remove KERNEL_DS usage in sys_oabi_epoll_ctl()
We no longer need to switch to KERNEL_DS mode in sys_oabi_epoll_ctl() as we can use do_epoll_ctl() to avoid the additional copy. Reviewed-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Diffstat (limited to 'arch/arm/kernel/sys_oabi-compat.c')
-rw-r--r--arch/arm/kernel/sys_oabi-compat.c15
1 files changed, 5 insertions, 10 deletions
diff --git a/arch/arm/kernel/sys_oabi-compat.c b/arch/arm/kernel/sys_oabi-compat.c
index 17bd32b22371..0203e545bbc8 100644
--- a/arch/arm/kernel/sys_oabi-compat.c
+++ b/arch/arm/kernel/sys_oabi-compat.c
@@ -253,20 +253,15 @@ asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,
{
struct oabi_epoll_event user;
struct epoll_event kernel;
- mm_segment_t fs;
- long ret;
- if (op == EPOLL_CTL_DEL)
- return sys_epoll_ctl(epfd, op, fd, NULL);
- if (copy_from_user(&user, event, sizeof(user)))
+ if (ep_op_has_event(op) &&
+ copy_from_user(&user, event, sizeof(user)))
return -EFAULT;
+
kernel.events = user.events;
kernel.data = user.data;
- fs = get_fs();
- set_fs(KERNEL_DS);
- ret = sys_epoll_ctl(epfd, op, fd, &kernel);
- set_fs(fs);
- return ret;
+
+ return do_epoll_ctl(epfd, op, fd, &kernel, false);
}
asmlinkage long sys_oabi_epoll_wait(int epfd,