2023-10-03 23:19:05

by Kees Cook

[permalink] [raw]
Subject: [PATCH] i40e: Annotate struct i40e_qvlist_info with __counted_by

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 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 i40e_qvlist_info.

Cc: Tony Nguyen <[email protected]>
Cc: Shiraz Saleem <[email protected]>
Cc: Jakub Kicinski <[email protected]>
Cc: Jesse Brandeburg <[email protected]>
Cc: Gurucharan G <[email protected]>
Cc: "Gustavo A. R. Silva" <[email protected]>
Link: https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci [1]
Signed-off-by: Kees Cook <[email protected]>
---
include/linux/net/intel/i40e_client.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/net/intel/i40e_client.h b/include/linux/net/intel/i40e_client.h
index ed42bd5f639f..0aa4411528fc 100644
--- a/include/linux/net/intel/i40e_client.h
+++ b/include/linux/net/intel/i40e_client.h
@@ -45,7 +45,7 @@ struct i40e_qv_info {

struct i40e_qvlist_info {
u32 num_vectors;
- struct i40e_qv_info qv_info[];
+ struct i40e_qv_info qv_info[] __counted_by(num_vectors);
};


--
2.34.1


2023-10-04 01:45:53

by Gustavo A. R. Silva

[permalink] [raw]
Subject: Re: [PATCH] i40e: Annotate struct i40e_qvlist_info with __counted_by



On 10/4/23 01:18, Kees Cook wrote:
> 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 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 i40e_qvlist_info.
>
> Cc: Tony Nguyen <[email protected]>
> Cc: Shiraz Saleem <[email protected]>
> Cc: Jakub Kicinski <[email protected]>
> Cc: Jesse Brandeburg <[email protected]>
> Cc: Gurucharan G <[email protected]>
> Cc: "Gustavo A. R. Silva" <[email protected]>
> Link: https://github.com/kees/kernel-tools/blob/trunk/coccinelle/examples/counted_by.cocci [1]
> Signed-off-by: Kees Cook <[email protected]>

Reviewed-by: Gustavo A. R. Silva <[email protected]>

Thanks
--
Gustavo

> ---
> include/linux/net/intel/i40e_client.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/linux/net/intel/i40e_client.h b/include/linux/net/intel/i40e_client.h
> index ed42bd5f639f..0aa4411528fc 100644
> --- a/include/linux/net/intel/i40e_client.h
> +++ b/include/linux/net/intel/i40e_client.h
> @@ -45,7 +45,7 @@ struct i40e_qv_info {
>
> struct i40e_qvlist_info {
> u32 num_vectors;
> - struct i40e_qv_info qv_info[];
> + struct i40e_qv_info qv_info[] __counted_by(num_vectors);
> };
>
>

2023-11-30 22:00:04

by Kees Cook

[permalink] [raw]
Subject: Re: [PATCH] i40e: Annotate struct i40e_qvlist_info with __counted_by

On Tue, 03 Oct 2023 16:18:38 -0700, Kees Cook wrote:
> 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 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 i40e_qvlist_info.
>
> [...]

Applied to for-next/hardening, thanks!

[1/1] i40e: Annotate struct i40e_qvlist_info with __counted_by
https://git.kernel.org/kees/c/da2e08d4630a

Take care,

--
Kees Cook