|
@@ -72,6 +72,9 @@
|
|
*/
|
|
*/
|
|
#ifndef COMPAT_SYSCALL_DEFINEx
|
|
#ifndef COMPAT_SYSCALL_DEFINEx
|
|
#define COMPAT_SYSCALL_DEFINEx(x, name, ...) \
|
|
#define COMPAT_SYSCALL_DEFINEx(x, name, ...) \
|
|
|
|
+ __diag_push(); \
|
|
|
|
+ __diag_ignore(GCC, 8, "-Wattribute-alias", \
|
|
|
|
+ "Type aliasing is used to sanitize syscall arguments");\
|
|
asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \
|
|
asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \
|
|
asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
|
|
asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \
|
|
__attribute__((alias(__stringify(__se_compat_sys##name)))); \
|
|
__attribute__((alias(__stringify(__se_compat_sys##name)))); \
|
|
@@ -80,8 +83,11 @@
|
|
asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \
|
|
asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \
|
|
asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
|
|
asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \
|
|
{ \
|
|
{ \
|
|
- return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\
|
|
|
|
|
|
+ long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\
|
|
|
|
+ __MAP(x,__SC_TEST,__VA_ARGS__); \
|
|
|
|
+ return ret; \
|
|
} \
|
|
} \
|
|
|
|
+ __diag_pop(); \
|
|
static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
|
|
static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__))
|
|
#endif /* COMPAT_SYSCALL_DEFINEx */
|
|
#endif /* COMPAT_SYSCALL_DEFINEx */
|
|
|
|
|