Re: [cocci] [PATCH] scripts/coccinelle: Add script for using ARRAY_END()
Alejandro Colomar <[email protected]> Mon, 9 Mar 2026 13:10:22 +0100
| Newsgroups | fr.inria.cocci,org.kernel.vger.kernel-janitors,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <aa6vSvsp4J6InmiB@devuan> |
Hi Markus,
On 2026-03-09T12:17:00+0100, Markus Elfring wrote:
> …
> > This script makes it easy to find more places where that macro should be
> > used.
>
> See also:
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v7.0-rc3#n94
Thanks!
> …
> > +++ b/scripts/coccinelle/misc/array_end.cocci
> > @@ -0,0 +1,93 @@
> …
>
>
> > +// Confidence: ???
>
> I hope that a more reasonable value can be determined for this information.
I don't know how the scale works. I know the script has a few false
negatives, and AFAIK there are no false positives. To what level of
confidence would that belong?
Is that field a keyword, or may I be explicit such as with this?:
// Confidence: no false positives, but a few false negatives
Or maybe I should write that in Comments...
> …
> > +// Comments:
>
> Please omit such an empty field.
Ok; thanks!
$ grep -rh '^// Comments:' scripts/coccinelle/ | sort | uniq -c
34 // Comments:
2 // Comments: -
1 // Comments: -I ... -all_includes can give more complete results
1 // Comments: Comments on code can be deleted if near code that is removed.
1 // Comments: Some false positives on empty default cases in switch statements.
1 // Comments: requires at least Coccinelle 0.2.4, lex or parse error otherwise
$ find scripts/coccinelle/ -type f | wc -l
76
It seems around half of the existing scripts have that. You may want to
remove those empty comments. I added it because the scripts I looked at
do have it.
> …
> > +@i@
> > +@@
> > +
> > +#include <linux/kernel.h>
>
> I doubt that such an SmPL rule would be required.
Okay, I'll remove it. Thanks!
> > +
> > +//----------------------------------------------------------
> > +// For context mode
> > +//----------------------------------------------------------
> > +
>
> Please omit such extra comment lines.
Agree. BTW, you may want to remove such lines from existing scripts:
$ grep -r '^//.*For context mode' scripts/coccinelle/
scripts/coccinelle/null/deref_null.cocci:// For context mode
scripts/coccinelle/misc/boolconv.cocci:// For context mode
scripts/coccinelle/misc/array_size.cocci:// For context mode
scripts/coccinelle/misc/struct_size.cocci:// For context mode
scripts/coccinelle/misc/newline_in_nl_msg.cocci:// For context mode
scripts/coccinelle/misc/badty.cocci:// For context mode
scripts/coccinelle/api/alloc/pool_zalloc-simple.cocci:// For context mode
scripts/coccinelle/api/alloc/zalloc-simple.cocci:// For context mode
scripts/coccinelle/api/alloc/alloc_cast.cocci:// For context mode
scripts/coccinelle/api/pm_runtime.cocci:// For context mode
scripts/coccinelle/api/resource_size.cocci:// For context mode
scripts/coccinelle/api/vma_pages.cocci:// For context mode
> > +@depends on i&&context@
> > +type T;
> > +T[] a;
> > +expression b;
> > +@@
> > +(
> > +* (a + ARRAY_SIZE(a))
> > +|
> > +* (&a[0] + ARRAY_SIZE(a))
> > +|
> > +* (&a[ARRAY_SIZE(a)])
> > +|
> > +* (&a[ARRAY_SIZE(a) - b])
> > +)
>
> Extra space characters may be omitted directly after SmPL asterisks.
Good to know; thanks!
Although most scripts seem to be using white space (space (164) or
tab (26)) after the asterisk. Please confirm if you prefer it removed
in new scripts. Only 39 scripts don't have white space after it.
$ grep -rh '^\*' scripts/coccinelle/ | grep -o '^..' | sort | uniq -c
26 *
164 *
4 *(
1 *;
1 *E
1 *I
1 *P
2 *W
1 *\
1 *b
1 *c
3 *d
1 *e
4 *f
1 *g
2 *i
1 *l
4 *r
2 *s
1 *u
2 *w
5 *x
$ grep -rh '^\*' scripts/coccinelle/ | grep -o '^.\s' | sort | uniq -c | hd
00000000 20 20 20 20 20 32 36 20 2a 09 0a 20 20 20 20 31 | 26 *.. 1|
00000010 36 34 20 2a 20 0a |64 * .|
00000016
$ grep -rh '^\*' scripts/coccinelle/ | grep -o '^.\S' | wc -l
39
> …
> > +@r depends on (org || report)@
>
> You may omit parentheses here.
Ok.
> …
> > +@script:python depends on report@
> > +p << r.p;
> > +@@
> > +
> > +msg="WARNING: Use ARRAY_END"
> > +coccilib.report.print_report(p[0], msg)
>
> Would the following command variant be a bit nicer?
>
> coccilib.report.print_report(p[0], "WARNING: opportunity for ARRAY_END()")
Sounds good.
> By the way:
> How do you think about to omit a cover letter for a single patch?
Sounds reasonable. I like the cover letter as it holds the range-diff,
which may become a bit confusing when it's in the same email as the
patch, but maybe that's just me.
I'll send v2 in a single email.
>
> Regards,
> Markus
Have a lovely day!
Alex
--
<https://www.alejandro-colomar.es>
signature.asc
(application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEES7Jt9u9GbmlWADAi64mZXMKQwqkFAmmuuK0ACgkQ64mZXMKQ wqkSzw/7BsY+QbHN9FP+p5Frj+Yh5Vr3bWpVw9TsBPrJ7Uq3JcaZHHDmXtIxZSj1 toOrlHkdfWlOLA+4QEec+PyFf3tTcAPu5jFYRazT9QjPwyj/vGSep6A4XKrZ/CQv Mvgn/OLhoW0/0SGqYp6xMmJxcNIpo+7Idm7cVnwf8WQNvHOToQBLDdXIOv6z18tI XFFQxayGDbK39nQldUB7j7c+lfO8w/Qpj9yrkrgLFrkRa3CDyeMUh/n/SIoepHPj crYvb2C95hZFEHdI8UbWLlRtpMRj/ZbltH0MZn7Hn6xrh55kKQOVgQzjew39IkRW J3xyGV5PejQZ3Ju2htZPcdOsHVksmcBLb1W5IXxJMBIIPuMeyGiqf6sl/tIR3l5Y 6jHJMIaKBy6zZRBOx80uyZEVhuTV43bEjePDfVLou7KWvBLNnCpDALUaLzlfhlaS HVPJJdVtUEQ96v+3tPdefIL/+HYvopI+L4Cg3ob5eIAxYTjd0JduKvZHh22a5vYg ccyVRtO9IOtY77z/5bw5r9lY8CqN/1rG/tHUQhS2RPd9337bkcFFprt0UTZxnBPP 4Szqx+KeeaODP4YaAVlPkWfNFWjbWk2+0m8MFfGWz79OkJZpI6zY7EbvQlDU1zXe cmMZX5yhs8JJ1d2n0GE6H3R4SLVcjZn64tSDO7w+zjx9v7W/1+s= =gFux -----END PGP SIGNATURE-----