[PATCH 42/44] net: mana: Avoid open coded arithmetic
authorErick Archer <erick.archer@outlook.com>
Sat, 6 Apr 2024 14:23:37 +0000 (16:23 +0200)
committerSalvatore Bonaccorso <carnil@debian.org>
Wed, 7 May 2025 15:10:56 +0000 (17:10 +0200)
commit48822bbb4c8bb7ebab976ba2c9d8f7d388ef71a1
tree2958202d33cddaf3ff63ec6cb81c0a5d5001049e
parent018e0911e14bc0a97c8c4207648976d11e4d644a
[PATCH 42/44] net: mana: Avoid open coded arithmetic

This is an effort to get rid of all multiplications from allocation
functions in order to prevent integer overflows [1][2].

As the "req" variable is a pointer to "struct mana_cfg_rx_steer_req_v2"
and this structure ends in a flexible array:

struct mana_cfg_rx_steer_req_v2 {
        [...]
        mana_handle_t indir_tab[] __counted_by(num_indir_entries);
};

the preferred way in the kernel is to use the struct_size() helper to
do the arithmetic instead of the calculation "size + size * count" in
the kzalloc() function.

Moreover, use the "offsetof" helper to get the indirect table offset
instead of the "sizeof" operator and avoid the open-coded arithmetic in
pointers using the new flex member. This new structure member also allow
us to remove the "req_indir_tab" variable since it is no longer needed.

Now, it is also possible to use the "flex_array_size" helper to compute
the size of these trailing elements in the "memcpy" function.

This way, the code is more readable and safer.

This code was detected with the help of Coccinelle, and audited and
modified manually.

Link: https://www.kernel.org/doc/html/latest/process/deprecated.html#open-coded-arithmetic-in-allocator-arguments
Link: https://github.com/KSPP/linux/issues/160
Signed-off-by: Erick Archer <erick.archer@outlook.com>
Link: https://lore.kernel.org/r/AS8PR02MB7237A21355C86EC0DCC0D83B8B022@AS8PR02MB7237.eurprd02.prod.outlook.com
Reviewed-by: Justin Stitt <justinstitt@google.com>
Signed-off-by: Leon Romanovsky <leon@kernel.org>
(cherry picked from commit a68292eb431619a5f8db9d4868346837c5606424)
Signed-off-by: Bastian Blank <waldi@debian.org>
Gbp-Pq: Topic features/all/ethernet-microsoft
Gbp-Pq: Name 0042-net-mana-Avoid-open-coded-arithmetic.patch
drivers/net/ethernet/microsoft/mana/mana_en.c