1*1446e1dfSGabriel Krisman Bertazi /* SPDX-License-Identifier: GPL-2.0 */ 2*1446e1dfSGabriel Krisman Bertazi /* 3*1446e1dfSGabriel Krisman Bertazi * Copyright (C) 2020 Collabora Ltd. 4*1446e1dfSGabriel Krisman Bertazi */ 5*1446e1dfSGabriel Krisman Bertazi #ifndef _SYSCALL_USER_DISPATCH_H 6*1446e1dfSGabriel Krisman Bertazi #define _SYSCALL_USER_DISPATCH_H 7*1446e1dfSGabriel Krisman Bertazi 8*1446e1dfSGabriel Krisman Bertazi #include <linux/thread_info.h> 9*1446e1dfSGabriel Krisman Bertazi 10*1446e1dfSGabriel Krisman Bertazi #ifdef CONFIG_GENERIC_ENTRY 11*1446e1dfSGabriel Krisman Bertazi 12*1446e1dfSGabriel Krisman Bertazi struct syscall_user_dispatch { 13*1446e1dfSGabriel Krisman Bertazi char __user *selector; 14*1446e1dfSGabriel Krisman Bertazi unsigned long offset; 15*1446e1dfSGabriel Krisman Bertazi unsigned long len; 16*1446e1dfSGabriel Krisman Bertazi bool on_dispatch; 17*1446e1dfSGabriel Krisman Bertazi }; 18*1446e1dfSGabriel Krisman Bertazi 19*1446e1dfSGabriel Krisman Bertazi int set_syscall_user_dispatch(unsigned long mode, unsigned long offset, 20*1446e1dfSGabriel Krisman Bertazi unsigned long len, char __user *selector); 21*1446e1dfSGabriel Krisman Bertazi 22*1446e1dfSGabriel Krisman Bertazi #define clear_syscall_work_syscall_user_dispatch(tsk) \ 23*1446e1dfSGabriel Krisman Bertazi clear_task_syscall_work(tsk, SYSCALL_USER_DISPATCH) 24*1446e1dfSGabriel Krisman Bertazi 25*1446e1dfSGabriel Krisman Bertazi #else 26*1446e1dfSGabriel Krisman Bertazi struct syscall_user_dispatch {}; 27*1446e1dfSGabriel Krisman Bertazi 28*1446e1dfSGabriel Krisman Bertazi static inline int set_syscall_user_dispatch(unsigned long mode, unsigned long offset, 29*1446e1dfSGabriel Krisman Bertazi unsigned long len, char __user *selector) 30*1446e1dfSGabriel Krisman Bertazi { 31*1446e1dfSGabriel Krisman Bertazi return -EINVAL; 32*1446e1dfSGabriel Krisman Bertazi } 33*1446e1dfSGabriel Krisman Bertazi 34*1446e1dfSGabriel Krisman Bertazi static inline void clear_syscall_work_syscall_user_dispatch(struct task_struct *tsk) 35*1446e1dfSGabriel Krisman Bertazi { 36*1446e1dfSGabriel Krisman Bertazi } 37*1446e1dfSGabriel Krisman Bertazi 38*1446e1dfSGabriel Krisman Bertazi #endif /* CONFIG_GENERIC_ENTRY */ 39*1446e1dfSGabriel Krisman Bertazi 40*1446e1dfSGabriel Krisman Bertazi #endif /* _SYSCALL_USER_DISPATCH_H */ 41