Message ID | 20240112103743.188072-1-dmantipov@yandex.ru (mailing list archive) |
---|---|
State | Deferred |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | net: b44: fix clang-specific fortify warning | expand |
On Fri, Jan 12, 2024 at 01:37:33PM +0300, Dmitry Antipov wrote: > When compiling with clang 17.0.6 and CONFIG_FORTIFY_SOURCE=y, I've > noticed the following warning (somewhat confusing due to absence of > an actual source code location): > > In file included from ./drivers/net/ethernet/broadcom/b44.c:17: > In file included from ./include/linux/module.h:13: > In file included from ./include/linux/stat.h:6: > In file included from ./arch/arm64/include/asm/stat.h:12: > In file included from ./include/linux/time.h:60: > In file included from ./include/linux/time32.h:13: > In file included from ./include/linux/timex.h:67: > In file included from ./arch/arm64/include/asm/timex.h:8: > In file included from ./arch/arm64/include/asm/arch_timer.h:12: > In file included from ./arch/arm64/include/asm/hwcap.h:9: > In file included from ./arch/arm64/include/asm/cpufeature.h:26: > In file included from ./include/linux/cpumask.h:12: > In file included from ./include/linux/bitmap.h:12: > In file included from ./include/linux/string.h:295: > ./include/linux/fortify-string.h:588:4: warning: call to '__read_overflow2_field' > declared with 'warning' attribute: detected read beyond size of field (2nd parameter); > maybe use struct_group()? [-Wattribute-warning] > 588 | __read_overflow2_field(q_size_field, size); > | ^ > > The compiler actually complains on 'b44_get_strings()' because the > fortification logic inteprets call to 'memcpy()' as an attempt to > copy the whole array from its first member and so issues an overread > warning. This warning may be silenced by passing an address of the > whole array and not the first member to 'memcpy()'. > > Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> This patch is for net-next, when reposting please annotate this in the subject. Subject: [PATCH net-next v2] ... [adapted from text by Jakub] ## Form letter - net-next-closed The merge window for v6.8 has begun and therefore net-next is closed for new drivers, features, code refactoring and optimizations. We are currently accepting bug fixes only. Please repost when net-next reopens on or after 22nd January. RFC patches sent for review only are obviously welcome at any time. See: https://www.kernel.org/doc/html/next/process/maintainer-netdev.html#development-cycle -- pw-bot: defer
diff --git a/drivers/net/ethernet/broadcom/b44.c b/drivers/net/ethernet/broadcom/b44.c index 3e4fb3c3e834..d87d995a1a15 100644 --- a/drivers/net/ethernet/broadcom/b44.c +++ b/drivers/net/ethernet/broadcom/b44.c @@ -2027,7 +2027,7 @@ static void b44_get_strings(struct net_device *dev, u32 stringset, u8 *data) { switch(stringset) { case ETH_SS_STATS: - memcpy(data, *b44_gstrings, sizeof(b44_gstrings)); + memcpy(data, b44_gstrings, sizeof(b44_gstrings)); break; } }
When compiling with clang 17.0.6 and CONFIG_FORTIFY_SOURCE=y, I've noticed the following warning (somewhat confusing due to absence of an actual source code location): In file included from ./drivers/net/ethernet/broadcom/b44.c:17: In file included from ./include/linux/module.h:13: In file included from ./include/linux/stat.h:6: In file included from ./arch/arm64/include/asm/stat.h:12: In file included from ./include/linux/time.h:60: In file included from ./include/linux/time32.h:13: In file included from ./include/linux/timex.h:67: In file included from ./arch/arm64/include/asm/timex.h:8: In file included from ./arch/arm64/include/asm/arch_timer.h:12: In file included from ./arch/arm64/include/asm/hwcap.h:9: In file included from ./arch/arm64/include/asm/cpufeature.h:26: In file included from ./include/linux/cpumask.h:12: In file included from ./include/linux/bitmap.h:12: In file included from ./include/linux/string.h:295: ./include/linux/fortify-string.h:588:4: warning: call to '__read_overflow2_field' declared with 'warning' attribute: detected read beyond size of field (2nd parameter); maybe use struct_group()? [-Wattribute-warning] 588 | __read_overflow2_field(q_size_field, size); | ^ The compiler actually complains on 'b44_get_strings()' because the fortification logic inteprets call to 'memcpy()' as an attempt to copy the whole array from its first member and so issues an overread warning. This warning may be silenced by passing an address of the whole array and not the first member to 'memcpy()'. Signed-off-by: Dmitry Antipov <dmantipov@yandex.ru> --- drivers/net/ethernet/broadcom/b44.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)