All of lore.kernel.org
 help / color / mirror / Atom feed
From: Saagar Jha <saagar@saagarjha.com>
To: linux-fsdevel@vger.kernel.org
Cc: viro@zeniv.linux.org.uk
Subject: Re: [PATCH] vfs: prevent signed overflow by using u64 over loff_t
Date: Fri, 17 Jan 2020 01:58:52 -0800	[thread overview]
Message-ID: <4EB51B0B-F49D-4613-A6F1-3436B9D27508@saagarjha.com> (raw)
In-Reply-To: <202001162347.Tb8u9nZn%lkp@intel.com>

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>


      reply	other threads:[~2020-01-17  9:59 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
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 message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4EB51B0B-F49D-4613-A6F1-3436B9D27508@saagarjha.com \
    --to=saagar@saagarjha.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=viro@zeniv.linux.org.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.