* [PATCH] vfs: prevent signed overflow by using u64 over loff_t @ 2020-01-13 6:40 Saagar Jha 2020-01-14 7:54 ` kbuild test robot 2020-01-16 15:21 ` kbuild test robot 0 siblings, 2 replies; 7+ messages in thread From: Saagar Jha @ 2020-01-13 6:40 UTC (permalink / raw) To: linux-fsdevel; +Cc: viro Hi, I think I’ve found a signed integer overflow when reconstructing the 64-bit offset from the two 32-bit values syscall arguments, and I believe the patch below would fix this issue. Unfortunately I don't have in the way of experience contributing to the kernel, so I would appreciate it if someone would point out if I should * not submit this at all, * submit this somewhere else, * fix it some other way, * format this differently, * test it using some method that I am unaware of, * or am missing something else in general. I've tried my best to align with the guidelines but if I've tripped up on the details I would appreciate guidance on what I should be doing instead. Thanks, Saagar Jha From c3525c7dfb9cede7cc246200ba70455855a3ec8b Mon Sep 17 00:00:00 2001 From: Saagar Jha <saagar@saagarjha.com> Date: Sun, 12 Jan 2020 21:46:28 -0800 Subject: [PATCH] vfs: prevent signed overflow by using u64 over loff_t 32-bit system calls taking a 64-bit offset that arrive as split over two 32-bit unsigned integers overflow the signed loff_t when shifted over by 32 bits. Using unsigned intermediate types fixes the undefined behavior. Signed-off-by: Saagar Jha <saagar@saagarjha.com> --- fs/read_write.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index 5bbf587f5bc1..3a1dfafcaf65 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -347,7 +347,7 @@ SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, if (whence > SEEK_MAX) goto out_putf; - offset = vfs_llseek(f.file, ((loff_t) offset_high << 32) | offset_low, + offset = vfs_llseek(f.file, ((u64) offset_high << 32) | offset_low, whence); retval = (int)offset; @@ -1250,7 +1250,7 @@ COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = (((u64)pos_high << 32) | pos_low; return do_compat_preadv64(fd, vec, vlen, pos, 0); } @@ -1272,7 +1272,7 @@ COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; if (pos == -1) return do_compat_readv(fd, vec, vlen, flags); @@ -1359,7 +1359,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; return do_compat_pwritev64(fd, vec, vlen, pos, 0); } @@ -1380,7 +1380,7 @@ COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; if (pos == -1) return do_compat_writev(fd, vec, vlen, flags); -- 2.24.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t 2020-01-13 6:40 [PATCH] vfs: prevent signed overflow by using u64 over loff_t Saagar Jha @ 2020-01-14 7:54 ` kbuild test robot 2020-01-16 15:21 ` kbuild test robot 1 sibling, 0 replies; 7+ messages in thread From: kbuild test robot @ 2020-01-14 7:54 UTC (permalink / raw) To: Saagar Jha; +Cc: kbuild-all, linux-fsdevel, viro [-- Attachment #1: Type: text/plain, Size: 29486 bytes --] Hi Saagar, Thank you for the patch! Yet something to improve: [auto build test ERROR on vfs/for-next] [also build test ERROR on linus/master v5.5-rc6 next-20200110] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Saagar-Jha/vfs-prevent-signed-overflow-by-using-u64-over-loff_t/20200113-144149 base: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-next config: powerpc-defconfig (attached as .config) compiler: powerpc64-linux-gcc (GCC) 7.5.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.5.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): fs/read_write.c: In function '__do_compat_sys_preadv': fs/read_write.c:1253:47: error: expected ')' before ';' token loff_t pos = (((u64)pos_high << 32) | pos_low; ^ fs/read_write.c:1256:1: error: expected ',' or ';' before '}' token } ^ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1271:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:114:35: note: in expansion of macro '__MAP5' #define __MAP6(m,t,a,...) m(t,a), __MAP5(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP6' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_preadv2' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_preadv2' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv2': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_preadv2'; did you mean '__do_compat_sys_preadv'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1283:15: error: invalid storage class for function 'compat_writev' static size_t compat_writev(struct file *file, ^~~~~~~~~~~~~ fs/read_write.c:1305:15: error: invalid storage class for function 'do_compat_writev' static size_t do_compat_writev(compat_ulong_t fd, ^~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1324:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *, vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:111:35: note: in expansion of macro '__MAP2' #define __MAP3(m,t,a,...) m(t,a), __MAP2(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP3' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_writev' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_writev' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_writev': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_writev'; did you mean '__se_compat_sys_writev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1330:13: error: invalid storage class for function 'do_compat_pwritev64' static long do_compat_pwritev64(unsigned long fd, ^~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1359:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:113:35: note: in expansion of macro '__MAP4' #define __MAP5(m,t,a,...) m(t,a), __MAP4(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP5' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_pwritev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_pwritev' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_pwritev' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_pwritev': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_pwritev'; did you mean '__do_compat_sys_writev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_pwritev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1380:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:114:35: note: in expansion of macro '__MAP5' #define __MAP6(m,t,a,...) m(t,a), __MAP5(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP6' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_pwritev2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_pwritev2' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_pwritev2' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_pwritev2': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_pwritev2'; did you mean '__do_compat_sys_pwritev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_pwritev2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1393:16: error: invalid storage class for function 'do_sendfile' static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos, ^~~~~~~~~~~ fs/read_write.c:1492:1: warning: 'alias' attribute ignored [-Wattributes] SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count) ^~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: vim +/__do_compat_sys_preadv2 +82 include/linux/compat.h 217f4433fc2fe7 Heiko Carstens 2014-02-26 54 468366138850f2 Al Viro 2012-11-23 55 #define COMPAT_SYSCALL_DEFINE1(name, ...) \ 468366138850f2 Al Viro 2012-11-23 56 COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 57 #define COMPAT_SYSCALL_DEFINE2(name, ...) \ 468366138850f2 Al Viro 2012-11-23 58 COMPAT_SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 59 #define COMPAT_SYSCALL_DEFINE3(name, ...) \ 468366138850f2 Al Viro 2012-11-23 60 COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 61 #define COMPAT_SYSCALL_DEFINE4(name, ...) \ 468366138850f2 Al Viro 2012-11-23 62 COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 63 #define COMPAT_SYSCALL_DEFINE5(name, ...) \ 468366138850f2 Al Viro 2012-11-23 64 COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 65 #define COMPAT_SYSCALL_DEFINE6(name, ...) \ 468366138850f2 Al Viro 2012-11-23 66 COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 67 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 68 /* 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 69 * The asmlinkage stub is aliased to a function named __se_compat_sys_*() which 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 70 * sign-extends 32-bit ints to longs whenever needed. The actual work is 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 71 * done within __do_compat_sys_*(). 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 72 */ 7303e30ec1d8fb Dominik Brodowski 2018-04-05 73 #ifndef COMPAT_SYSCALL_DEFINEx 468366138850f2 Al Viro 2012-11-23 74 #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ bee20031772af3 Arnd Bergmann 2018-06-19 75 __diag_push(); \ bee20031772af3 Arnd Bergmann 2018-06-19 76 __diag_ignore(GCC, 8, "-Wattribute-alias", \ bee20031772af3 Arnd Bergmann 2018-06-19 77 "Type aliasing is used to sanitize syscall arguments");\ 3e2052e5dd4062 Dominik Brodowski 2018-03-22 @78 asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ 83460ec8dcac14 Andi Kleen 2013-11-12 @79 asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 80 __attribute__((alias(__stringify(__se_compat_sys##name)))); \ c9a211951c7c79 Howard McLauchlan 2018-03-21 81 ALLOW_ERROR_INJECTION(compat_sys##name, ERRNO); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @82 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 83 asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @84 asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ 468366138850f2 Al Viro 2012-11-23 85 { \ bee20031772af3 Arnd Bergmann 2018-06-19 @86 long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ bee20031772af3 Arnd Bergmann 2018-06-19 87 __MAP(x,__SC_TEST,__VA_ARGS__); \ bee20031772af3 Arnd Bergmann 2018-06-19 88 return ret; \ 468366138850f2 Al Viro 2012-11-23 89 } \ bee20031772af3 Arnd Bergmann 2018-06-19 90 __diag_pop(); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 91 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) 7303e30ec1d8fb Dominik Brodowski 2018-04-05 92 #endif /* COMPAT_SYSCALL_DEFINEx */ 468366138850f2 Al Viro 2012-11-23 93 :::::: The code at line 82 was first introduced by commit :::::: 5ac9efa3c50d7caff9f3933bb8a3ad1139d92d92 syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention :::::: TO: Dominik Brodowski <linux@dominikbrodowski.net> :::::: CC: Ingo Molnar <mingo@kernel.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 25639 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t @ 2020-01-14 7:54 ` kbuild test robot 0 siblings, 0 replies; 7+ messages in thread From: kbuild test robot @ 2020-01-14 7:54 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 29980 bytes --] Hi Saagar, Thank you for the patch! Yet something to improve: [auto build test ERROR on vfs/for-next] [also build test ERROR on linus/master v5.5-rc6 next-20200110] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Saagar-Jha/vfs-prevent-signed-overflow-by-using-u64-over-loff_t/20200113-144149 base: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-next config: powerpc-defconfig (attached as .config) compiler: powerpc64-linux-gcc (GCC) 7.5.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.5.0 make.cross ARCH=powerpc If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): fs/read_write.c: In function '__do_compat_sys_preadv': fs/read_write.c:1253:47: error: expected ')' before ';' token loff_t pos = (((u64)pos_high << 32) | pos_low; ^ fs/read_write.c:1256:1: error: expected ',' or ';' before '}' token } ^ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1271:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:114:35: note: in expansion of macro '__MAP5' #define __MAP6(m,t,a,...) m(t,a), __MAP5(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP6' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_preadv2' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_preadv2' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv2': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_preadv2'; did you mean '__do_compat_sys_preadv'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1283:15: error: invalid storage class for function 'compat_writev' static size_t compat_writev(struct file *file, ^~~~~~~~~~~~~ fs/read_write.c:1305:15: error: invalid storage class for function 'do_compat_writev' static size_t do_compat_writev(compat_ulong_t fd, ^~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1324:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *, vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:111:35: note: in expansion of macro '__MAP2' #define __MAP3(m,t,a,...) m(t,a), __MAP2(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP3' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_writev' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_writev' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_writev': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_writev'; did you mean '__se_compat_sys_writev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1330:13: error: invalid storage class for function 'do_compat_pwritev64' static long do_compat_pwritev64(unsigned long fd, ^~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1359:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:113:35: note: in expansion of macro '__MAP4' #define __MAP5(m,t,a,...) m(t,a), __MAP4(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP5' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_pwritev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_pwritev' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_pwritev' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_pwritev': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_pwritev'; did you mean '__do_compat_sys_writev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_pwritev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1358:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:78:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: fs/read_write.c:1380:16: warning: 'alias' attribute ignored [-Wattributes] const struct compat_iovec __user *,vec, ^ include/linux/syscalls.h:117:25: note: in definition of macro '__SC_DECL' #define __SC_DECL(t, a) t a ^ include/linux/syscalls.h:114:35: note: in expansion of macro '__MAP5' #define __MAP6(m,t,a,...) m(t,a), __MAP5(m,__VA_ARGS__) ^~~~~~ include/linux/syscalls.h:115:22: note: in expansion of macro '__MAP6' #define __MAP(n,...) __MAP##n(__VA_ARGS__) ^~~~~ >> include/linux/compat.h:79:35: note: in expansion of macro '__MAP' asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ ^~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ In file included from fs/read_write.c:20:0: >> include/linux/compat.h:82:21: error: invalid storage class for function '__do_compat_sys_pwritev2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:82:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> include/linux/compat.h:84:18: error: static declaration of '__se_compat_sys_pwritev2' follows non-static declaration asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:83:18: note: previous declaration of '__se_compat_sys_pwritev2' was here asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_pwritev2': >> include/linux/compat.h:86:14: error: implicit declaration of function '__do_compat_sys_pwritev2'; did you mean '__do_compat_sys_pwritev'? [-Werror=implicit-function-declaration] long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': include/linux/compat.h:91:21: error: invalid storage class for function '__do_compat_sys_pwritev2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:91:2: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1379:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1393:16: error: invalid storage class for function 'do_sendfile' static ssize_t do_sendfile(int out_fd, int in_fd, loff_t *ppos, ^~~~~~~~~~~ fs/read_write.c:1492:1: warning: 'alias' attribute ignored [-Wattributes] SYSCALL_DEFINE4(sendfile, int, out_fd, int, in_fd, off_t __user *, offset, size_t, count) ^~~~~~~~~~~~~~~ In file included from fs/read_write.c:17:0: vim +/__do_compat_sys_preadv2 +82 include/linux/compat.h 217f4433fc2fe7 Heiko Carstens 2014-02-26 54 468366138850f2 Al Viro 2012-11-23 55 #define COMPAT_SYSCALL_DEFINE1(name, ...) \ 468366138850f2 Al Viro 2012-11-23 56 COMPAT_SYSCALL_DEFINEx(1, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 57 #define COMPAT_SYSCALL_DEFINE2(name, ...) \ 468366138850f2 Al Viro 2012-11-23 58 COMPAT_SYSCALL_DEFINEx(2, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 59 #define COMPAT_SYSCALL_DEFINE3(name, ...) \ 468366138850f2 Al Viro 2012-11-23 60 COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 61 #define COMPAT_SYSCALL_DEFINE4(name, ...) \ 468366138850f2 Al Viro 2012-11-23 62 COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 63 #define COMPAT_SYSCALL_DEFINE5(name, ...) \ 468366138850f2 Al Viro 2012-11-23 64 COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 65 #define COMPAT_SYSCALL_DEFINE6(name, ...) \ 468366138850f2 Al Viro 2012-11-23 66 COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) 468366138850f2 Al Viro 2012-11-23 67 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 68 /* 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 69 * The asmlinkage stub is aliased to a function named __se_compat_sys_*() which 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 70 * sign-extends 32-bit ints to longs whenever needed. The actual work is 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 71 * done within __do_compat_sys_*(). 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 72 */ 7303e30ec1d8fb Dominik Brodowski 2018-04-05 73 #ifndef COMPAT_SYSCALL_DEFINEx 468366138850f2 Al Viro 2012-11-23 74 #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ bee20031772af3 Arnd Bergmann 2018-06-19 75 __diag_push(); \ bee20031772af3 Arnd Bergmann 2018-06-19 76 __diag_ignore(GCC, 8, "-Wattribute-alias", \ bee20031772af3 Arnd Bergmann 2018-06-19 77 "Type aliasing is used to sanitize syscall arguments");\ 3e2052e5dd4062 Dominik Brodowski 2018-03-22 @78 asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)); \ 83460ec8dcac14 Andi Kleen 2013-11-12 @79 asmlinkage long compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 80 __attribute__((alias(__stringify(__se_compat_sys##name)))); \ c9a211951c7c79 Howard McLauchlan 2018-03-21 81 ALLOW_ERROR_INJECTION(compat_sys##name, ERRNO); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @82 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 83 asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @84 asmlinkage long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ 468366138850f2 Al Viro 2012-11-23 85 { \ bee20031772af3 Arnd Bergmann 2018-06-19 @86 long ret = __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ bee20031772af3 Arnd Bergmann 2018-06-19 87 __MAP(x,__SC_TEST,__VA_ARGS__); \ bee20031772af3 Arnd Bergmann 2018-06-19 88 return ret; \ 468366138850f2 Al Viro 2012-11-23 89 } \ bee20031772af3 Arnd Bergmann 2018-06-19 90 __diag_pop(); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 91 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) 7303e30ec1d8fb Dominik Brodowski 2018-04-05 92 #endif /* COMPAT_SYSCALL_DEFINEx */ 468366138850f2 Al Viro 2012-11-23 93 :::::: The code at line 82 was first introduced by commit :::::: 5ac9efa3c50d7caff9f3933bb8a3ad1139d92d92 syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention :::::: TO: Dominik Brodowski <linux@dominikbrodowski.net> :::::: CC: Ingo Molnar <mingo@kernel.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 25639 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2] vfs: prevent signed overflow by using u64 over loff_t 2020-01-14 7:54 ` kbuild test robot (?) @ 2020-01-14 8:28 ` Saagar Jha -1 siblings, 0 replies; 7+ messages in thread From: Saagar Jha @ 2020-01-14 8:28 UTC (permalink / raw) To: linux-fsdevel; +Cc: kbuild-all, viro, kbuild test robot Oops, I accidentally had accidentally added an extra parenthesis to my patch; sorry about that. I think I fixed the issue now and I added the "Reported-by" line to the new patch below. Is there anything else I need to do? Regards, Saagar Jha From 4867a403decc364c8b0f4cb533bce8419e070e06 Mon Sep 17 00:00:00 2001 From: Saagar Jha <saagar@saagarjha.com> Date: Sun, 12 Jan 2020 21:46:28 -0800 Subject: [PATCH] vfs: prevent signed overflow by using u64 over loff_t 32-bit system calls taking a 64-bit offset that arrive as split over two 32-bit unsigned integers overflow the signed loff_t when shifted over by 32 bits. Using unsigned intermediate types fixes the undefined behavior. Reported-by: kbuild test robot <lkp@intel.com> Signed-off-by: Saagar Jha <saagar@saagarjha.com> --- fs/read_write.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fs/read_write.c b/fs/read_write.c index 5bbf587f5bc1..0f40eaa6c315 100644 --- a/fs/read_write.c +++ b/fs/read_write.c @@ -347,7 +347,7 @@ SYSCALL_DEFINE5(llseek, unsigned int, fd, unsigned long, offset_high, if (whence > SEEK_MAX) goto out_putf; - offset = vfs_llseek(f.file, ((loff_t) offset_high << 32) | offset_low, + offset = vfs_llseek(f.file, ((u64) offset_high << 32) | offset_low, whence); retval = (int)offset; @@ -1250,7 +1250,7 @@ COMPAT_SYSCALL_DEFINE5(preadv, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; return do_compat_preadv64(fd, vec, vlen, pos, 0); } @@ -1272,7 +1272,7 @@ COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; if (pos == -1) return do_compat_readv(fd, vec, vlen, flags); @@ -1359,7 +1359,7 @@ COMPAT_SYSCALL_DEFINE5(pwritev, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; return do_compat_pwritev64(fd, vec, vlen, pos, 0); } @@ -1380,7 +1380,7 @@ COMPAT_SYSCALL_DEFINE6(pwritev2, compat_ulong_t, fd, const struct compat_iovec __user *,vec, compat_ulong_t, vlen, u32, pos_low, u32, pos_high, rwf_t, flags) { - loff_t pos = ((loff_t)pos_high << 32) | pos_low; + loff_t pos = ((u64)pos_high << 32) | pos_low; if (pos == -1) return do_compat_writev(fd, vec, vlen, flags); -- 2.24.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t 2020-01-13 6:40 [PATCH] vfs: prevent signed overflow by using u64 over loff_t Saagar Jha @ 2020-01-16 15:21 ` kbuild test robot 2020-01-16 15:21 ` kbuild test robot 1 sibling, 0 replies; 7+ messages in thread From: kbuild test robot @ 2020-01-16 15:21 UTC (permalink / raw) To: Saagar Jha; +Cc: kbuild-all, linux-fsdevel, viro [-- Attachment #1: Type: text/plain, Size: 28744 bytes --] Hi Saagar, Thank you for the patch! Yet something to improve: [auto build test ERROR on vfs/for-next] [also build test ERROR on linus/master v5.5-rc6 next-20200115] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Saagar-Jha/vfs-prevent-signed-overflow-by-using-u64-over-loff_t/20200113-144149 base: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-next config: x86_64-randconfig-h001-20200114 (attached as .config) compiler: gcc-7 (Debian 7.5.0-3) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): fs/read_write.c: In function '__do_compat_sys_preadv': fs/read_write.c:1253:47: error: expected ')' before ';' token loff_t pos = (((u64)pos_high << 32) | pos_low; ^ fs/read_write.c:1256:1: error: expected ',' or ';' before '}' token } ^ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv64v2' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv64v2' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_preadv64v2': arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv64v2': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64v2'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv2' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv2' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_preadv2': arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv2'; did you mean '__se_compat_sys_preadv'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv2': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv2'; did you mean '__do_compat_sys_preadv'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1283:15: error: invalid storage class for function 'compat_writev' static size_t compat_writev(struct file *file, ^~~~~~~~~~~~~ fs/read_write.c:1305:15: error: invalid storage class for function 'do_compat_writev' static size_t do_compat_writev(compat_ulong_t fd, ^~~~~~~~~~~~~~~~ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_writev' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_writev' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_writev' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_writev': >> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_writev'; did you mean '__x32_compat_sys_writev'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_writev' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_writev': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_writev'; did you mean '__se_compat_sys_writev'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1330:13: error: invalid storage class for function 'do_compat_pwritev64' static long do_compat_pwritev64(unsigned long fd, ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_pwritev64' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_pwritev64' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_pwritev64' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_pwritev64' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_pwritev64': >> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_pwritev64'; did you mean '__x32_compat_sys_pwritev64'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ vim +/__x32_compat_sys_preadv64v2 +106 arch/x86/include/asm/syscall_wrapper.h ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 87 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 88 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 89 #ifdef CONFIG_X86_X32 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 90 /* ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 91 * For the x32 ABI, we need to create a stub for compat_sys_*() which is aware ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 92 * of the x86-64-style parameter ordering of x32 syscalls. The syscalls common ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 93 * with x86_64 obviously do not need such care. ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 94 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 95 #define __X32_COMPAT_SYS_STUB0(x, name, ...) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 96 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs);\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 97 ALLOW_ERROR_INJECTION(__x32_compat_sys_##name, ERRNO); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 98 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs)\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 99 { \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 100 return __se_compat_sys_##name();\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 101 } cf3b83e19d7c92 Andy Lutomirski 2019-10-08 102 c76fc98260751e Dominik Brodowski 2018-04-09 103 #define __X32_COMPAT_SYS_STUBx(x, name, ...) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 104 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 105 ALLOW_ERROR_INJECTION(__x32_compat_sys##name, ERRNO); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @106 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 107 { \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @108 return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 109 } ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 110 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 111 #else /* CONFIG_X86_X32 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 112 #define __X32_COMPAT_SYS_STUB0(x, name) c76fc98260751e Dominik Brodowski 2018-04-09 113 #define __X32_COMPAT_SYS_STUBx(x, name, ...) ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 114 #endif /* CONFIG_X86_X32 */ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 115 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 116 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 117 #ifdef CONFIG_COMPAT ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 118 /* ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 119 * Compat means IA32_EMULATION and/or X86_X32. As they use a different ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 120 * mapping of registers to parameters, we need to generate stubs for each d5a00528b58cdb Dominik Brodowski 2018-04-09 121 * of them. ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 122 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 123 #define COMPAT_SYSCALL_DEFINE0(name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 124 static long __se_compat_sys_##name(void); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 125 static inline long __do_compat_sys_##name(void); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 126 __IA32_COMPAT_SYS_STUB0(x, name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 127 __X32_COMPAT_SYS_STUB0(x, name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 128 static long __se_compat_sys_##name(void) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 129 { \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 130 return __do_compat_sys_##name(); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 131 } \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 132 static inline long __do_compat_sys_##name(void) cf3b83e19d7c92 Andy Lutomirski 2019-10-08 133 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 134 #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 135 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 136 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ c76fc98260751e Dominik Brodowski 2018-04-09 137 __IA32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ c76fc98260751e Dominik Brodowski 2018-04-09 @138 __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 139 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 140 { \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 141 return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 142 } \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 143 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 144 :::::: The code at line 106 was first introduced by commit :::::: 5ac9efa3c50d7caff9f3933bb8a3ad1139d92d92 syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention :::::: TO: Dominik Brodowski <linux@dominikbrodowski.net> :::::: CC: Ingo Molnar <mingo@kernel.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation [-- Attachment #2: .config.gz --] [-- Type: application/gzip, Size: 38100 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t @ 2020-01-16 15:21 ` kbuild test robot 0 siblings, 0 replies; 7+ messages in thread From: kbuild test robot @ 2020-01-16 15:21 UTC (permalink / raw) To: kbuild-all [-- Attachment #1: Type: text/plain, Size: 29199 bytes --] Hi Saagar, Thank you for the patch! Yet something to improve: [auto build test ERROR on vfs/for-next] [also build test ERROR on linus/master v5.5-rc6 next-20200115] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Saagar-Jha/vfs-prevent-signed-overflow-by-using-u64-over-loff_t/20200113-144149 base: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-next config: x86_64-randconfig-h001-20200114 (attached as .config) compiler: gcc-7 (Debian 7.5.0-3) 7.5.0 reproduce: # save the attached .config to linux build tree make ARCH=x86_64 If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@intel.com> All error/warnings (new ones prefixed by >>): fs/read_write.c: In function '__do_compat_sys_preadv': fs/read_write.c:1253:47: error: expected ')' before ';' token loff_t pos = (((u64)pos_high << 32) | pos_low; ^ fs/read_write.c:1256:1: error: expected ',' or ';' before '}' token } ^ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv64v2' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv64v2' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_preadv64v2': arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv64v2': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64v2'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv2' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv2' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_preadv2': arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv2'; did you mean '__se_compat_sys_preadv'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv2' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_preadv2': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv2'; did you mean '__do_compat_sys_preadv'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv2' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1283:15: error: invalid storage class for function 'compat_writev' static size_t compat_writev(struct file *file, ^~~~~~~~~~~~~ fs/read_write.c:1305:15: error: invalid storage class for function 'do_compat_writev' static size_t do_compat_writev(compat_ulong_t fd, ^~~~~~~~~~~~~~~~ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_writev' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_writev' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_writev' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_writev': >> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_writev'; did you mean '__x32_compat_sys_writev'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_writev' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__se_compat_sys_writev': arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_writev'; did you mean '__se_compat_sys_writev'? [-Werror=implicit-function-declaration] return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__do_compat_sys_preadv': arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_writev' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ^ include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1330:13: error: invalid storage class for function 'do_compat_pwritev64' static long do_compat_pwritev64(unsigned long fd, ^~~~~~~~~~~~~~~~~~~ In file included from include/linux/syscalls.h:96:0, from fs/read_write.c:17: arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_pwritev64' static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ ^ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_pwritev64' static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ ^ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ >> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_pwritev64' follows non-static declaration asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_pwritev64' was here asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ ^ >> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ ^~~~~~~~~~~~~~~~~~~~~~ include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, ^~~~~~~~~~~~~~~~~~~~~~ fs/read_write.c: In function '__x32_compat_sys_pwritev64': >> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_pwritev64'; did you mean '__x32_compat_sys_pwritev64'? [-Werror=implicit-function-declaration] return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ ^ vim +/__x32_compat_sys_preadv64v2 +106 arch/x86/include/asm/syscall_wrapper.h ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 87 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 88 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 89 #ifdef CONFIG_X86_X32 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 90 /* ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 91 * For the x32 ABI, we need to create a stub for compat_sys_*() which is aware ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 92 * of the x86-64-style parameter ordering of x32 syscalls. The syscalls common ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 93 * with x86_64 obviously do not need such care. ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 94 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 95 #define __X32_COMPAT_SYS_STUB0(x, name, ...) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 96 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs);\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 97 ALLOW_ERROR_INJECTION(__x32_compat_sys_##name, ERRNO); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 98 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs)\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 99 { \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 100 return __se_compat_sys_##name();\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 101 } cf3b83e19d7c92 Andy Lutomirski 2019-10-08 102 c76fc98260751e Dominik Brodowski 2018-04-09 103 #define __X32_COMPAT_SYS_STUBx(x, name, ...) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 104 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 105 ALLOW_ERROR_INJECTION(__x32_compat_sys##name, ERRNO); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @106 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 107 { \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @108 return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 109 } ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 110 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 111 #else /* CONFIG_X86_X32 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 112 #define __X32_COMPAT_SYS_STUB0(x, name) c76fc98260751e Dominik Brodowski 2018-04-09 113 #define __X32_COMPAT_SYS_STUBx(x, name, ...) ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 114 #endif /* CONFIG_X86_X32 */ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 115 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 116 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 117 #ifdef CONFIG_COMPAT ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 118 /* ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 119 * Compat means IA32_EMULATION and/or X86_X32. As they use a different ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 120 * mapping of registers to parameters, we need to generate stubs for each d5a00528b58cdb Dominik Brodowski 2018-04-09 121 * of them. ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 122 */ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 123 #define COMPAT_SYSCALL_DEFINE0(name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 124 static long __se_compat_sys_##name(void); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 125 static inline long __do_compat_sys_##name(void); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 126 __IA32_COMPAT_SYS_STUB0(x, name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 127 __X32_COMPAT_SYS_STUB0(x, name) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 128 static long __se_compat_sys_##name(void) \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 129 { \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 130 return __do_compat_sys_##name(); \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 131 } \ cf3b83e19d7c92 Andy Lutomirski 2019-10-08 132 static inline long __do_compat_sys_##name(void) cf3b83e19d7c92 Andy Lutomirski 2019-10-08 133 ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 134 #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 135 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 136 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ c76fc98260751e Dominik Brodowski 2018-04-09 137 __IA32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ c76fc98260751e Dominik Brodowski 2018-04-09 @138 __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 139 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 140 { \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 141 return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 142 } \ 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 143 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 144 :::::: The code at line 106 was first introduced by commit :::::: 5ac9efa3c50d7caff9f3933bb8a3ad1139d92d92 syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention :::::: TO: Dominik Brodowski <linux@dominikbrodowski.net> :::::: CC: Ingo Molnar <mingo@kernel.org> --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org Intel Corporation [-- Attachment #2: config.gz --] [-- Type: application/gzip, Size: 38100 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t 2020-01-16 15:21 ` kbuild test robot (?) @ 2020-01-17 9:58 ` Saagar Jha -1 siblings, 0 replies; 7+ messages in thread From: Saagar Jha @ 2020-01-17 9:58 UTC (permalink / raw) To: linux-fsdevel; +Cc: viro Hmm, that’s my old patch again :( The new one should build properly, but I don’t know how to tell the bot to use it… Saagar Jha > On Jan 16, 2020, at 07:21, kbuild test robot <lkp@intel.com> wrote: > > Hi Saagar, > > Thank you for the patch! Yet something to improve: > > [auto build test ERROR on vfs/for-next] > [also build test ERROR on linus/master v5.5-rc6 next-20200115] > [if your patch is applied to the wrong git tree, please drop us a note to help > improve the system. BTW, we also suggest to use '--base' option to specify the > base tree in git format-patch, please see https://stackoverflow.com/a/37406982] > > url: https://github.com/0day-ci/linux/commits/Saagar-Jha/vfs-prevent-signed-overflow-by-using-u64-over-loff_t/20200113-144149 > base: https://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git for-next > config: x86_64-randconfig-h001-20200114 (attached as .config) > compiler: gcc-7 (Debian 7.5.0-3) 7.5.0 > reproduce: > # save the attached .config to linux build tree > make ARCH=x86_64 > > If you fix the issue, kindly add following tag > Reported-by: kbuild test robot <lkp@intel.com> > > All error/warnings (new ones prefixed by >>): > > fs/read_write.c: In function '__do_compat_sys_preadv': > fs/read_write.c:1253:47: error: expected ')' before ';' token > loff_t pos = (((u64)pos_high << 32) | pos_low; > ^ > fs/read_write.c:1256:1: error: expected ',' or ';' before '}' token > } > ^ > In file included from include/linux/syscalls.h:96:0, > from fs/read_write.c:17: > arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > ^ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > ^ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ >>> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv64v2' follows non-static declaration > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv64v2' was here > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__x32_compat_sys_preadv64v2': > arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64'? [-Werror=implicit-function-declaration] > return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv64v2' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__se_compat_sys_preadv64v2': > arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv64v2'; did you mean '__se_compat_sys_preadv64v2'? [-Werror=implicit-function-declaration] > return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ > ^ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv64v2' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > ^ > include/linux/compat.h:64:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(5, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1259:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE5' > COMPAT_SYSCALL_DEFINE5(preadv64v2, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_preadv2' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > ^ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_preadv2' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > ^ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ >>> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_preadv2' follows non-static declaration > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_preadv2' was here > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__x32_compat_sys_preadv2': > arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_preadv2'; did you mean '__se_compat_sys_preadv'? [-Werror=implicit-function-declaration] > return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_preadv2' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__se_compat_sys_preadv2': > arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_preadv2'; did you mean '__do_compat_sys_preadv'? [-Werror=implicit-function-declaration] > return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ > ^ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_preadv2' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > ^ > include/linux/compat.h:66:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(6, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1270:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE6' > COMPAT_SYSCALL_DEFINE6(preadv2, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1283:15: error: invalid storage class for function 'compat_writev' > static size_t compat_writev(struct file *file, > ^~~~~~~~~~~~~ > fs/read_write.c:1305:15: error: invalid storage class for function 'do_compat_writev' > static size_t do_compat_writev(compat_ulong_t fd, > ^~~~~~~~~~~~~~~~ > In file included from include/linux/syscalls.h:96:0, > from fs/read_write.c:17: > arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_writev' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > ^ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_writev' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > ^ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ >>> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_writev' follows non-static declaration > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_writev' was here > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__x32_compat_sys_writev': >>> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_writev'; did you mean '__x32_compat_sys_writev'? [-Werror=implicit-function-declaration] > return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:106:13: warning: ISO C90 forbids mixed declarations and code [-Wdeclaration-after-statement] > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:139:14: error: invalid storage class for function '__se_compat_sys_writev' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ^ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__se_compat_sys_writev': > arch/x86/include/asm/syscall_wrapper.h:141:10: error: implicit declaration of function '__do_compat_sys_writev'; did you mean '__se_compat_sys_writev'? [-Werror=implicit-function-declaration] > return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ > ^ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__do_compat_sys_preadv': > arch/x86/include/asm/syscall_wrapper.h:143:21: error: invalid storage class for function '__do_compat_sys_writev' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > ^ > include/linux/compat.h:60:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(3, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1323:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE3' > COMPAT_SYSCALL_DEFINE3(writev, compat_ulong_t, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1330:13: error: invalid storage class for function 'do_compat_pwritev64' > static long do_compat_pwritev64(unsigned long fd, > ^~~~~~~~~~~~~~~~~~~ > In file included from include/linux/syscalls.h:96:0, > from fs/read_write.c:17: > arch/x86/include/asm/syscall_wrapper.h:135:14: error: invalid storage class for function '__se_compat_sys_pwritev64' > static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > ^ > include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' > COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:136:21: error: invalid storage class for function '__do_compat_sys_pwritev64' > static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > ^ > include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' > COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ >>> arch/x86/include/asm/syscall_wrapper.h:106:18: error: static declaration of '__x32_compat_sys_pwritev64' follows non-static declaration > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' > COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > arch/x86/include/asm/syscall_wrapper.h:104:18: note: previous declaration of '__x32_compat_sys_pwritev64' was here > asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ > ^ >>> arch/x86/include/asm/syscall_wrapper.h:138:2: note: in expansion of macro '__X32_COMPAT_SYS_STUBx' > __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > ^~~~~~~~~~~~~~~~~~~~~~ > include/linux/compat.h:62:2: note: in expansion of macro 'COMPAT_SYSCALL_DEFINEx' > COMPAT_SYSCALL_DEFINEx(4, _##name, __VA_ARGS__) > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c:1350:1: note: in expansion of macro 'COMPAT_SYSCALL_DEFINE4' > COMPAT_SYSCALL_DEFINE4(pwritev64, unsigned long, fd, > ^~~~~~~~~~~~~~~~~~~~~~ > fs/read_write.c: In function '__x32_compat_sys_pwritev64': >>> arch/x86/include/asm/syscall_wrapper.h:108:10: error: implicit declaration of function '__se_compat_sys_pwritev64'; did you mean '__x32_compat_sys_pwritev64'? [-Werror=implicit-function-declaration] > return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ > ^ > > vim +/__x32_compat_sys_preadv64v2 +106 arch/x86/include/asm/syscall_wrapper.h > > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 87 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 88 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 89 #ifdef CONFIG_X86_X32 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 90 /* > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 91 * For the x32 ABI, we need to create a stub for compat_sys_*() which is aware > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 92 * of the x86-64-style parameter ordering of x32 syscalls. The syscalls common > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 93 * with x86_64 obviously do not need such care. > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 94 */ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 95 #define __X32_COMPAT_SYS_STUB0(x, name, ...) \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 96 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs);\ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 97 ALLOW_ERROR_INJECTION(__x32_compat_sys_##name, ERRNO); \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 98 asmlinkage long __x32_compat_sys_##name(const struct pt_regs *regs)\ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 99 { \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 100 return __se_compat_sys_##name();\ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 101 } > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 102 > c76fc98260751e Dominik Brodowski 2018-04-09 103 #define __X32_COMPAT_SYS_STUBx(x, name, ...) \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 104 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs);\ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 105 ALLOW_ERROR_INJECTION(__x32_compat_sys##name, ERRNO); \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @106 asmlinkage long __x32_compat_sys##name(const struct pt_regs *regs)\ > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 107 { \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 @108 return __se_compat_sys##name(SC_X86_64_REGS_TO_ARGS(x,__VA_ARGS__));\ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 109 } > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 110 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 111 #else /* CONFIG_X86_X32 */ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 112 #define __X32_COMPAT_SYS_STUB0(x, name) > c76fc98260751e Dominik Brodowski 2018-04-09 113 #define __X32_COMPAT_SYS_STUBx(x, name, ...) > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 114 #endif /* CONFIG_X86_X32 */ > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 115 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 116 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 117 #ifdef CONFIG_COMPAT > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 118 /* > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 119 * Compat means IA32_EMULATION and/or X86_X32. As they use a different > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 120 * mapping of registers to parameters, we need to generate stubs for each > d5a00528b58cdb Dominik Brodowski 2018-04-09 121 * of them. > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 122 */ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 123 #define COMPAT_SYSCALL_DEFINE0(name) \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 124 static long __se_compat_sys_##name(void); \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 125 static inline long __do_compat_sys_##name(void); \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 126 __IA32_COMPAT_SYS_STUB0(x, name) \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 127 __X32_COMPAT_SYS_STUB0(x, name) \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 128 static long __se_compat_sys_##name(void) \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 129 { \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 130 return __do_compat_sys_##name(); \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 131 } \ > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 132 static inline long __do_compat_sys_##name(void) > cf3b83e19d7c92 Andy Lutomirski 2019-10-08 133 > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 134 #define COMPAT_SYSCALL_DEFINEx(x, name, ...) \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 135 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)); \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 136 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__));\ > c76fc98260751e Dominik Brodowski 2018-04-09 137 __IA32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > c76fc98260751e Dominik Brodowski 2018-04-09 @138 __X32_COMPAT_SYS_STUBx(x, name, __VA_ARGS__) \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 139 static long __se_compat_sys##name(__MAP(x,__SC_LONG,__VA_ARGS__)) \ > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 140 { \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 141 return __do_compat_sys##name(__MAP(x,__SC_DELOUSE,__VA_ARGS__));\ > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 142 } \ > 5ac9efa3c50d7c Dominik Brodowski 2018-04-09 143 static inline long __do_compat_sys##name(__MAP(x,__SC_DECL,__VA_ARGS__)) > ebeb8c82ffaf94 Dominik Brodowski 2018-04-05 144 > > :::::: The code at line 106 was first introduced by commit > :::::: 5ac9efa3c50d7caff9f3933bb8a3ad1139d92d92 syscalls/core, syscalls/x86: Clean up compat syscall stub naming convention > > :::::: TO: Dominik Brodowski <linux@dominikbrodowski.net> > :::::: CC: Ingo Molnar <mingo@kernel.org> > > --- > 0-DAY kernel test infrastructure Open Source Technology Center > https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org Intel Corporation > <.config.gz> ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-01-17 9:59 UTC | newest] Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2020-01-13 6:40 [PATCH] vfs: prevent signed overflow by using u64 over loff_t Saagar Jha 2020-01-14 7:54 ` kbuild test robot 2020-01-14 7:54 ` kbuild test robot 2020-01-14 8:28 ` [PATCH v2] " Saagar Jha 2020-01-16 15:21 ` [PATCH] " kbuild test robot 2020-01-16 15:21 ` kbuild test robot 2020-01-17 9:58 ` Saagar Jha
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.