platform/surface: aggregator: Annotate struct ssam_event with __counted_by
authorKees Cook <keescook@chromium.org>
Fri, 22 Sep 2023 17:54:37 +0000 (10:54 -0700)
committerIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Tue, 26 Sep 2023 13:01:07 +0000 (16:01 +0300)
Prepare for the coming implementation by GCC and Clang of the __counted_by
attribute. Flexible array members annotated with __counted_by can have
their accesses bounds-checked at run-time checking via CONFIG_UBSAN_BOUNDS
(for array indexing) and CONFIG_FORTIFY_SOURCE (for strcpy/memcpy-family
functions).

As found with Coccinelle[1], add __counted_by for struct ssam_event.

[1] https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci

Cc: Maximilian Luz <luzmaximilian@gmail.com>
Cc: platform-driver-x86@vger.kernel.org
Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Reviewed-by: Maximilian Luz <luzmaximilian@gmail.com>
Link: https://lore.kernel.org/r/20230922175436.work.031-kees@kernel.org
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
include/linux/surface_aggregator/controller.h

index cb7980805920a24e90556a4d5554ef285bd04866..5b67f0f47d800fdf29be7dd3f4a1eb94852e1e1f 100644 (file)
@@ -44,7 +44,7 @@ struct ssam_event {
        u8 command_id;
        u8 instance_id;
        u16 length;
-       u8 data[];
+       u8 data[] __counted_by(length);
 };
 
 /**