2017-08-31 14:18:32

by Thomas Meyer

[permalink] [raw]
Subject: [PATCH] ipv6: sr: Use ARRAY_SIZE macro

Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first
candidates.
Maybe a coccinelle can catch all of those.

Signed-off-by: Thomas Meyer <[email protected]>
---
net/ipv6/seg6_hmac.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/net/ipv6/seg6_hmac.c b/net/ipv6/seg6_hmac.c
index f950cb53d5e3..33fb35cbfac1 100644
--- a/net/ipv6/seg6_hmac.c
+++ b/net/ipv6/seg6_hmac.c
@@ -12,6 +12,7 @@
*/

#include <linux/errno.h>
+#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/socket.h>
#include <linux/sockios.h>
@@ -110,7 +111,7 @@ static struct seg6_hmac_algo *__hmac_get_algo(u8 alg_id)
struct seg6_hmac_algo *algo;
int i, alg_count;

- alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo);
+ alg_count = ARRAY_SIZE(hmac_algos);
for (i = 0; i < alg_count; i++) {
algo = &hmac_algos[i];
if (algo->alg_id == alg_id)
@@ -360,7 +361,7 @@ static int seg6_hmac_init_algo(void)
struct shash_desc *shash;
int i, alg_count, cpu;

- alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo);
+ alg_count = ARRAY_SIZE(hmac_algos);

for (i = 0; i < alg_count; i++) {
struct crypto_shash **p_tfm;
@@ -421,7 +422,7 @@ void seg6_hmac_exit(void)
struct seg6_hmac_algo *algo = NULL;
int i, alg_count, cpu;

- alg_count = sizeof(hmac_algos) / sizeof(struct seg6_hmac_algo);
+ alg_count = ARRAY_SIZE(hmac_algos);
for (i = 0; i < alg_count; i++) {
algo = &hmac_algos[i];
for_each_possible_cpu(cpu) {
--
2.11.0


2017-09-02 01:35:42

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] ipv6: sr: Use ARRAY_SIZE macro

From: Thomas Meyer <[email protected]>
Date: Thu, 31 Aug 2017 16:18:15 +0200

> Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first
> candidates.
> Maybe a coccinelle can catch all of those.
>
> Signed-off-by: Thomas Meyer <[email protected]>

Applied, thanks.

2017-09-02 03:52:00

by Joe Perches

[permalink] [raw]
Subject: Re: [PATCH] ipv6: sr: Use ARRAY_SIZE macro

On Fri, 2017-09-01 at 18:35 -0700, David Miller wrote:
> From: Thomas Meyer <[email protected]>
> Date: Thu, 31 Aug 2017 16:18:15 +0200
>
> > Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first
> > candidates.
> > Maybe a coccinelle can catch all of those.

Umm: try scripts/coccinelle/misc/array_size.cocci

Until then, maybe a perl script?

$ git grep --name-only sizeof.*/.*sizeof drivers/net | \
xargs perl -p -i -e 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\/\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\)/ARRAY_SIZE(\1)/g'

gives:

$ git diff --stat drivers/net
?drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c???????????????????|???2 +-
?drivers/net/ethernet/mellanox/mlx4/fw.c?????????????????????????|???4 +--
?drivers/net/ethernet/mellanox/mlx4/main.c???????????????????????|???8 +++---
?drivers/net/wireless/ath/ath9k/ar9003_eeprom.c??????????????????|???2 +-
?drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phytbl_n.c | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------
?5 files changed, 101 insertions(+), 101 deletions(-)

2017-09-02 06:24:10

by Thomas Meyer

[permalink] [raw]
Subject: Re: [PATCH] ipv6: sr: Use ARRAY_SIZE macro

On Fri, Sep 01, 2017 at 08:51:55PM -0700, Joe Perches wrote:
> On Fri, 2017-09-01 at 18:35 -0700, David Miller wrote:
> > From: Thomas Meyer <[email protected]>
> > Date: Thu, 31 Aug 2017 16:18:15 +0200
> >
> > > Grepping for "sizeof\(.+\) / sizeof\(" found this as one of the first
> > > candidates.
> > > Maybe a coccinelle can catch all of those.
>
Hi,

> Umm: try scripts/coccinelle/misc/array_size.cocci

Yes, I found out/remembered after I submitted above patch... I used to
run most of the cocci spatches (some just run too long) after each rc1 release, but lost interest/time. nobody seems to
do this regularly, at least for existing spatches.

See 6 patches with Message-ID [email protected]

> Until then, maybe a perl script?
>
> $ git grep --name-only sizeof.*/.*sizeof drivers/net | \
> xargs perl -p -i -e 's/\bsizeof\s*\(\s*(\w+)\s*\)\s*\/\s*sizeof\s*\(\s*\1\s*\[\s*0\s*\]\s*\)/ARRAY_SIZE(\1)/g'
>
> gives:
>
> $ git diff --stat drivers/net
> ?drivers/net/ethernet/intel/ixgbe/ixgbe_x550.c???????????????????|???2 +-
> ?drivers/net/ethernet/mellanox/mlx4/fw.c?????????????????????????|???4 +--
> ?drivers/net/ethernet/mellanox/mlx4/main.c???????????????????????|???8 +++---
> ?drivers/net/wireless/ath/ath9k/ar9003_eeprom.c??????????????????|???2 +-
> ?drivers/net/wireless/broadcom/brcm80211/brcmsmac/phy/phytbl_n.c | 186 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------
> ?5 files changed, 101 insertions(+), 101 deletions(-)

Which makes me wonder why cocci didn't found above places...
Also cocci includes linux/kernel.h if not already present.

I will give above regex a try for the whole kernel tree and check for
false positives.

with kind regards
thomas