On Fri, Mar 01, 2024 at 02:25:19PM -0600, David Lechner wrote: > This adds the __counted_by() attribute to the flex array at the end of > struct spi_engine_program in the AXI SPI Engine controller driver. > > Suggested-by: Nuno Sá <nuno.sa@xxxxxxxxxx> > Signed-off-by: David Lechner <dlechner@xxxxxxxxxxxx> > --- > drivers/spi/spi-axi-spi-engine.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/spi/spi-axi-spi-engine.c b/drivers/spi/spi-axi-spi-engine.c > index d89f75170c9e..e801eed820df 100644 > --- a/drivers/spi/spi-axi-spi-engine.c > +++ b/drivers/spi/spi-axi-spi-engine.c > @@ -75,7 +75,7 @@ > > struct spi_engine_program { > unsigned int length; > - uint16_t instructions[]; > + uint16_t instructions[] __counted_by(length); > }; You'll also need to change places where you deal with changes to "length", as now accesses to "instructions" will be bounds-checked by the compiler. For example, this change: static void spi_engine_program_add_cmd(struct spi_engine_program *p, bool dry, uint16_t cmd) { p->length++; if (!dry) p->instructions[p->length - 1] = cmd; } -- Kees Cook