2023-11-28 19:53 GMT+09:00, Dmitry Antipov <dmantipov@xxxxxxxxx>: > When compiling with gcc version 14.0.0 20231126 (experimental) > and CONFIG_FORTIFY_SOURCE=y, I've noticed the following: > > In file included from ./include/linux/string.h:295, > from ./include/linux/bitmap.h:12, > from ./include/linux/cpumask.h:12, > from ./arch/x86/include/asm/paravirt.h:17, > from ./arch/x86/include/asm/cpuid.h:62, > from ./arch/x86/include/asm/processor.h:19, > from ./arch/x86/include/asm/cpufeature.h:5, > from ./arch/x86/include/asm/thread_info.h:53, > from ./include/linux/thread_info.h:60, > from ./arch/x86/include/asm/preempt.h:9, > from ./include/linux/preempt.h:79, > from ./include/linux/spinlock.h:56, > from ./include/linux/wait.h:9, > from ./include/linux/wait_bit.h:8, > from ./include/linux/fs.h:6, > from fs/smb/client/smb2pdu.c:18: > In function 'fortify_memcpy_chk', > inlined from '__SMB2_close' at fs/smb/client/smb2pdu.c:3480:4: > ./include/linux/fortify-string.h:588:25: warning: call to > '__read_overflow2_field' > declared with attribute warning: detected read beyond size of field (2nd > parameter); > maybe use struct_group()? [-Wattribute-warning] > 588 | __read_overflow2_field(q_size_field, size); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > and: > > In file included from ./include/linux/string.h:295, > from ./include/linux/bitmap.h:12, > from ./include/linux/cpumask.h:12, > from ./arch/x86/include/asm/paravirt.h:17, > from ./arch/x86/include/asm/cpuid.h:62, > from ./arch/x86/include/asm/processor.h:19, > from ./arch/x86/include/asm/cpufeature.h:5, > from ./arch/x86/include/asm/thread_info.h:53, > from ./include/linux/thread_info.h:60, > from ./arch/x86/include/asm/preempt.h:9, > from ./include/linux/preempt.h:79, > from ./include/linux/spinlock.h:56, > from ./include/linux/wait.h:9, > from ./include/linux/wait_bit.h:8, > from ./include/linux/fs.h:6, > from fs/smb/client/cifssmb.c:17: > In function 'fortify_memcpy_chk', > inlined from 'CIFS_open' at fs/smb/client/cifssmb.c:1248:3: > ./include/linux/fortify-string.h:588:25: warning: call to > '__read_overflow2_field' > declared with attribute warning: detected read beyond size of field (2nd > parameter); > maybe use struct_group()? [-Wattribute-warning] > 588 | __read_overflow2_field(q_size_field, size); > | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ > > In both cases, the fortification logic inteprets calls to 'memcpy()' as an > attempts to copy an amount of data which exceeds the size of the specified > field (i.e. more than 8 bytes from __le64 value) and thus issues an > overread > warning. Both of these warnings may be silenced by using the convenient > 'struct_group()' quirk. I'm confused by your use of the word "may" above. Did you checked if the warnings are silenced with this patch ? Otherwise Looks good to me. Acked-by: Namjae Jeon <linkinjeon@xxxxxxxxxx> Thanks! > > Signed-off-by: Dmitry Antipov <dmantipov@xxxxxxxxx>