[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190917073232.GA14291@archlinux-threadripper>
Date: Tue, 17 Sep 2019 00:32:32 -0700
From: Nathan Chancellor <natechancellor@...il.com>
To: Tom Lendacky <thomas.lendacky@....com>,
Giuseppe Cavallaro <peppe.cavallaro@...com>,
Alexandre Torgue <alexandre.torgue@...com>,
Jose Abreu <joabreu@...opsys.com>,
"David S. Miller" <davem@...emloft.net>
Cc: Nick Desaulniers <ndesaulniers@...gle.com>,
Ilie Halip <ilie.halip@...il.com>,
David Bolvansky <david.bolvansky@...il.com>,
netdev@...r.kernel.org, clang-built-linux@...glegroups.com
Subject: -Wsizeof-array-div warnings in ethernet drivers
Hi all,
Clang recently added a new diagnostic in r371605, -Wsizeof-array-div,
that tries to warn when sizeof(X) / sizeof(Y) does not compute the
number of elements in an array X (i.e., sizeof(Y) is wrong). See that
commit for more details:
https://github.com/llvm/llvm-project/commit/3240ad4ced0d3223149b72a4fc2a4d9b67589427
Some ethernet drivers have an instance of this warning due to receive
side scaling support:
../drivers/net/ethernet/amd/xgbe/xgbe-dev.c:361:49: warning: expression
does not compute the number of elements in this array; element type is
'u8' (aka 'unsigned char'), not 'u32' (aka 'unsigned int')
[-Wsizeof-array-div]
unsigned int key_regs = sizeof(pdata->rss_key) / sizeof(u32);
~~~~~~~~~~~~~~ ^
../drivers/net/ethernet/amd/xgbe/xgbe-dev.c:361:49: note: place
parentheses around the 'sizeof(u32)' expression to silence this warning
../drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:537:36: warning:
expression does not compute the number of elements in this array;
element type is 'u8' (aka 'unsigned char'), not 'u32' (aka 'unsigned
int') [-Wsizeof-array-div]
for (i = 0; i < (sizeof(cfg->key) / sizeof(u32)); i++) {
~~~~~~~~ ^
../drivers/net/ethernet/stmicro/stmmac/dwxgmac2_core.c:537:36: note:
place parentheses around the 'sizeof(u32)' expression to silence this
warning
../drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c:2329:49: warning:
expression does not compute the number of elements in this array;
element type is 'u8' (aka 'unsigned char'), not 'u32' (aka 'unsigned
int') [-Wsizeof-array-div]
unsigned int key_regs = sizeof(pdata->rss_key) / sizeof(u32);
~~~~~~~~~~~~~~ ^
../drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c:2329:49: note: place
parentheses around the 'sizeof(u32)' expression to silence this warning
What is the reasoning behind having the key being an array of u8s but
seemlingly converting it into an array of u32s? It's not immediately
apparent from reading over the code but I am not familiar with it so I
might be making a mistake. I assume this is intentional? If so, the
warning can be silenced and we'll send patches to do so but we want to
make sure we aren't actually papering over a mistake.
Cheers!
Nathan
Powered by blists - more mailing lists