i2c: Annotate struct i2c_atr with __counted_by
authorKees Cook <keescook@chromium.org>
Fri, 22 Sep 2023 17:54:25 +0000 (10:54 -0700)
committerWolfram Sang <wsa@kernel.org>
Sun, 24 Sep 2023 20:50:25 +0000 (22:50 +0200)
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 i2c_atr.

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

Signed-off-by: Kees Cook <keescook@chromium.org>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Signed-off-by: Wolfram Sang <wsa@kernel.org>
drivers/i2c/i2c-atr.c

index 8ca1daadec9373dec9df3cab220d5bc1a5035918..f21475ae592183a45b5e46a20e7a0699fb88132c 100644 (file)
@@ -94,7 +94,7 @@ struct i2c_atr {
 
        struct notifier_block i2c_nb;
 
-       struct i2c_adapter *adapter[];
+       struct i2c_adapter *adapter[] __counted_by(max_adapters);
 };
 
 static struct i2c_atr_alias_pair *