[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240112103743.188072-1-dmantipov@yandex.ru>
Date: Fri, 12 Jan 2024 13:37:33 +0300
From: Dmitry Antipov <dmantipov@...dex.ru>
To: Michael Chan <michael.chan@...adcom.com>
Cc: Artem Chernyshev <artem.chernyshev@...-soft.ru>,
netdev@...r.kernel.org,
Dmitry Antipov <dmantipov@...dex.ru>
Subject: [PATCH] net: b44: fix clang-specific fortify warning
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@...dex.ru>
---
drivers/net/ethernet/broadcom/b44.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
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;
}
}
--
2.43.0
Powered by blists - more mailing lists