]> www.infradead.org Git - users/hch/configfs.git/commitdiff
net: mana: Add flex array to struct mana_cfg_rx_steer_req_v2
authorErick Archer <erick.archer@outlook.com>
Sat, 6 Apr 2024 14:23:35 +0000 (16:23 +0200)
committerLeon Romanovsky <leon@kernel.org>
Thu, 11 Apr 2024 10:46:47 +0000 (13:46 +0300)
The "struct mana_cfg_rx_steer_req_v2" uses a dynamically sized set of
trailing elements. Specifically, it uses a "mana_handle_t" array. So,
use the preferred way in the kernel declaring a flexible array [1].

At the same time, 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).

This is a previous step to refactor the two consumers of this structure.

 drivers/infiniband/hw/mana/qp.c
 drivers/net/ethernet/microsoft/mana/mana_en.c

The ultimate goal is to avoid the open-coded arithmetic in the memory
allocator functions [2] using the "struct_size" macro.

Link: https://www.kernel.org/doc/html/next/process/deprecated.html#zero-length-and-one-element-arrays
Link: https://www.kernel.org/doc/html/next/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments
Signed-off-by: Erick Archer <erick.archer@outlook.com>
Link: https://lore.kernel.org/r/AS8PR02MB7237E2900247571C9CB84C678B022@AS8PR02MB7237.eurprd02.prod.outlook.com
Reviewed-by: Long Li <longli@microsoft.com>
Reviewed-by: Justin Stitt <justinstitt@google.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
include/net/mana/mana.h

index 76147feb0d10aed24d43a7d32a11407e81cb4e11..46f741ebce21c64bf2b0139e451a9db887cdc115 100644 (file)
@@ -671,6 +671,7 @@ struct mana_cfg_rx_steer_req_v2 {
        u8 hashkey[MANA_HASH_KEY_SIZE];
        u8 cqe_coalescing_enable;
        u8 reserved2[7];
+       mana_handle_t indir_tab[] __counted_by(num_indir_entries);
 }; /* HW DATA */
 
 struct mana_cfg_rx_steer_resp {