Hi Julia, > Date: 2026-09-27 11:21:54+0200 > From: Julia Lawall > > > > On Tue, 22 Sep 2026, Alejandro Colomar wrote: > > > Recently, we added an ARRAY_END() macro to simplify finding a pointer > > one past the last element in an array. Such a pointer is often called > > the 'end', and thus the macro name. > > > > Make it easy to find more places where that macro should be used. > > > > See also: > > 436debc9cad8 ("array_size.h: add ARRAY_END()") > > 8118f197b7b7 ("mm: fix benign off-by-one bugs") > > a9e5620c9a9e ("kernel: fix off-by-one benign bugs") > > 61e9210e2392 ("mm: use ARRAY_END() instead of open-coding it") > > > > Cc: Kees Cook > > Cc: Markus Elfring > > Cc: Julia Lawall > > Cc: Nicolas Palix > > Signed-off-by: Alejandro Colomar > > --- > > > > > > Hi Julia, > > > > Resent the patch now, as you asked me to do. > > Applied, thanks. > > Afterwards, I made two changes: > > * Add disable zero_multiple_format to each rule to avoid considering > the possibility that an array index is expressed using '\0' > > * Omit outer parentheses on context and org/report rules that > only match ubt don't transform, since matching a subterm gives > the same result whether or not the parentheses are present. Thanks!! I'll look at the patch to see how it changed, out of curiosity. :) Have a lovely day! Alex > > julia > > > > > > > > Cheers, > > Alex > > > > Here's the original message that came with the patch: > > > > Hi! > > > > This v3 only has one change: I've removed the comment about the false > > negatives. They were due to spatch(1) not being able to correctly parse > > unrelated code elsewhere. > > > > See range-diff and interdiff at the bottom. > > > > > > Have a lovely night! > > Alex > > > > scripts/coccinelle/misc/array_end.cocci | 73 +++++++++++++++++++++++++ > > 1 file changed, 73 insertions(+) > > create mode 100644 scripts/coccinelle/misc/array_end.cocci > > > > diff --git a/scripts/coccinelle/misc/array_end.cocci b/scripts/coccinelle/misc/array_end.cocci > > new file mode 100644 > > index 00000000..88c664de > > --- /dev/null > > +++ b/scripts/coccinelle/misc/array_end.cocci > > @@ -0,0 +1,73 @@ > > +// SPDX-License-Identifier: GPL-2.0-only > > +/// Use ARRAY_END instead of an expression derived from ARRAY_SIZE > > +// > > +// Confidence: High > > +// Copyright: 2026, Alejandro Colomar > > +// Options: --no-includes --include-headers > > + > > +virtual patch > > +virtual context > > +virtual org > > +virtual report > > + > > +@depends on 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]) > > +) > > + > > +@depends on patch@ > > +type T; > > +T[] a; > > +expression b; > > +@@ > > +( > > +- (a + ARRAY_SIZE(a)) > > ++ ARRAY_END(a) > > +| > > +- (&a[0] + ARRAY_SIZE(a)) > > ++ ARRAY_END(a) > > +| > > +- (&a[ARRAY_SIZE(a)]) > > ++ ARRAY_END(a) > > +| > > +- (&a[ARRAY_SIZE(a) - b]) > > ++ ARRAY_END(a) - b > > +) > > + > > +@r depends on org || report@ > > +type T; > > +T[] a; > > +expression b; > > +position p; > > +@@ > > +( > > + (a@p + ARRAY_SIZE(a)) > > +| > > + (&a[0]@p + ARRAY_SIZE(a)) > > +| > > + (&a[ARRAY_SIZE(a)]@p) > > +| > > + (&a[ARRAY_SIZE(a)@p - b]) > > +) > > + > > +@script:python depends on org@ > > +p << r.p; > > +@@ > > + > > +coccilib.org.print_todo(p[0], "WARNING should use ARRAY_END") > > + > > +@script:python depends on report@ > > +p << r.p; > > +@@ > > + > > +coccilib.report.print_report(p[0], "WARNING: opportunity for ARRAY_END") > > > > Range-diff: > > 1: 9fd8d3d1 ! 1: 2ae22f8b scripts/coccinelle: Add script for using ARRAY_END() > > @@ scripts/coccinelle/misc/array_end.cocci (new) > > +// > > +// Confidence: High > > +// Copyright: 2026, Alejandro Colomar > > -+// Comments: No known false positives, but has a few false negatives > > +// Options: --no-includes --include-headers > > + > > +virtual patch > > -- > > 2.53.0 > > > > > > ----- End forwarded message ----- > > > > -- > > > > --