FAILED: patch "[PATCH] ARM: 9109/1: oabi-compat: add epoll_pwait handler" failed to apply to 4.4-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b6e47f3c11c17965acb2a12001af3b1cd5658f37 Mon Sep 17 00:00:00 2001
From: Arnd Bergmann <[email protected]>
Date: Wed, 11 Aug 2021 08:30:20 +0100
Subject: [PATCH] ARM: 9109/1: oabi-compat: add epoll_pwait handler
The epoll_wait() syscall has a special version for OABI compat mode to convert the arguments to the EABI structure layout of the kernel. However, the later epoll_pwait() syscall was added in arch/arm in linux-2.6.32 without this conversion.
Use the same kind of handler for both.
arch/arm/kernel/sys_oabi-compat.c +35 -3
@@ -265,9 +265,8 @@ asmlinkage long sys_oabi_epoll_ctl(int epfd, int op, int fd,return do_epoll_ctl (epfd, op, fd, &kernel, false); } -asmlinkage long sys_oabi_epoll_wait (int epfd, -struct oabi_epoll_event __user *events, -int maxevents,int timeout) +static long do_oabi_epoll_wait (int epfd,struct oabi_epoll_event __user *events, +int maxevents,int timeout) {struct epoll_event *kbuf;struct oabi_epoll_event e;
@@ -314,6 +313,39 @@ asmlinkage long sys_oabi_epoll_wait(int epfd, }#endif +SYSCALL_DEFINE4 (oabi_epoll_wait, int, epfd, + struct oabi_epoll_event __user *, events, + int, maxevents, int, timeout) +{ +return do_oabi_epoll_wait (epfd, events, maxevents, timeout); +} + +/* +* Implement the event wait interface for the eventpoll file. It is the kernel +* part of the user space epoll_pwait(2). +*/ +SYSCALL_DEFINE6 (oabi_epoll_pwait, int, epfd, + struct oabi_epoll_event __user *, events, int, maxevents, + int, timeout, const sigset_t __user *, sigmask, + size_t, sigsetsize) +{ +int error; + +/* +* If the caller wants a certain signal mask to be set during the wait, +* we apply it here. +*/ + error =set_user_sigmask (sigmask, sigsetsize); +if (error) +return error; + + error =do_oabi_epoll_wait (epfd, events, maxevents, timeout); +restore_saved_sigmask_unless (error == -EINTR ); + +return error; +} +#endif +struct oabi_sembuf {unsigned short sem_num;short sem_op;
arch/arm/tools/syscall.tbl +1 -1
@@ -360,7 +360,7 @@ 343 common vmsplice sys_vmsplice 344 common move_pages sys_move_pages 345 common getcpu sys_getcpu -346 common epoll_pwait sys_epoll_pwait +346 common epoll_pwait sys_epoll_pwait sys_oabi_epoll_pwait 347 common kexec_load sys_kexec_load 348 common utimensat sys_utimensat_time32 349 common signalfd sys_signalfd
Quoted 6 lines · On Wed, Sep 15, 2021 at 3:06 PM <[email protected]> wrote:
The patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
I think we're good without the backport. While this fixes a real bug, the only reason to actually need OABI support is to run old binaries, and those predate this syscall.
Arnd