Add TIF_FD_SLOTS and test it in do_trap0() once the system call has returned, before the ptrace exit stop gets to see the result.
Signed-off-by: Christian Brauner (Amutable) <[email protected]> --- arch/hexagon/include/asm/thread_info.h | 2 ++ arch/hexagon/kernel/traps.c | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/arch/hexagon/include/asm/thread_info.h b/arch/hexagon/include/asm/thread_info.h index e90f280b9ce3..8558d2d147f8 100644 --- a/arch/hexagon/include/asm/thread_info.h +++ b/arch/hexagon/include/asm/thread_info.h @@ -88,6 +88,7 @@ register struct thread_info *__current_thread_info asm(QUOTED_THREADINFO_REG); #define TIF_SIGPENDING 2 /* signal pending */ #define TIF_NEED_RESCHED 3 /* rescheduling necessary */ #define TIF_SINGLESTEP 4 /* restore ss @ return to usr mode */ +#define TIF_FD_SLOTS 5 /* syscall prepared descriptors */ #define TIF_RESTORE_SIGMASK 6 /* restore sig mask in do_signal() */ #define TIF_NOTIFY_SIGNAL 7 /* signal notifications exist */ /* true if poll_idle() is polling TIF_NEED_RESCHED */ @@ -98,6 +99,7 @@ register struct thread_info *__current_thread_info asm(QUOTED_THREADINFO_REG); #define _TIF_SIGPENDING (1 << TIF_SIGPENDING) #define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED) #define _TIF_SINGLESTEP (1 << TIF_SINGLESTEP) +#define _TIF_FD_SLOTS (1 << TIF_FD_SLOTS) #define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL) /* work to do on interrupt/exception return - All but TIF_SYSCALL_TRACE */ diff --git a/arch/hexagon/kernel/traps.c b/arch/hexagon/kernel/traps.c index 6fe0c1b62c1b..4d15c5212fd7 100644 --- a/arch/hexagon/kernel/traps.c +++ b/arch/hexagon/kernel/traps.c @@ -6,6 +6,7 @@ */ #include <linux/init.h> +#include <linux/file.h> #include <linux/sched/signal.h> #include <linux/sched/debug.h> #include <linux/sched/task_stack.h> @@ -381,6 +382,9 @@ void do_trap0(struct pt_regs *regs) regs->r04, regs->r05); } + if (unlikely(test_thread_flag(TIF_FD_SLOTS))) + fd_slots_commit(regs); + /* allow strace to get the syscall return state */ if (unlikely(test_thread_flag(TIF_SYSCALL_TRACE))) ptrace_report_syscall_exit(regs, 0); -- 2.53.0
