netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] net: b44: fix clang-specific fortify warning
@ 2024-01-12 10:37 Dmitry Antipov
  2024-01-13 15:56 ` Simon Horman
  0 siblings, 1 reply; 2+ messages in thread
From: Dmitry Antipov @ 2024-01-12 10:37 UTC (permalink / raw)
  To: Michael Chan; +Cc: Artem Chernyshev, netdev, Dmitry Antipov

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(-)

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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] net: b44: fix clang-specific fortify warning
  2024-01-12 10:37 [PATCH] net: b44: fix clang-specific fortify warning Dmitry Antipov
@ 2024-01-13 15:56 ` Simon Horman
  0 siblings, 0 replies; 2+ messages in thread
From: Simon Horman @ 2024-01-13 15:56 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: Michael Chan, Artem Chernyshev, netdev

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-01-13 15:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-01-12 10:37 [PATCH] net: b44: fix clang-specific fortify warning Dmitry Antipov
2024-01-13 15:56 ` Simon Horman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).