Re: [PATCH][next] qed/qed_ll2: Replace one-element array with flexible-array member

From: David Miller
Date: Mon Sep 28 2020 - 21:48:19 EST


From: "Gustavo A. R. Silva" <gustavoars@xxxxxxxxxx>
Date: Mon, 28 Sep 2020 10:16:17 -0500

> There is a regular need in the kernel to provide a way to declare having
> a dynamically sized set of trailing elements in a structure. Kernel code
> should always use “flexible array members”[1] for these cases. The older
> style of one-element or zero-length arrays should no longer be used[2].
>
> Refactor the code according to the use of a flexible-array member in
> struct qed_ll2_tx_packet, instead of a one-element array and use the
> struct_size() helper to calculate the size for the allocations. Commit
> f5823fe6897c ("qed: Add ll2 option to limit the number of bds per packet")
> was used as a reference point for these changes.
>
> Also, it's important to notice that flexible-array members should occur
> last in any structure, and structures containing such arrays and that
> are members of other structures, must also occur last in the containing
> structure. That's why _cur_completing_packet_ is now moved to the bottom
> in struct qed_ll2_tx_queue. _descq_mem_ and _cur_send_packet_ are also
> moved for unification.
>
> [1] https://en.wikipedia.org/wiki/Flexible_array_member
> [2] https://www.kernel.org/doc/html/v5.9-rc1/process/deprecated.html#zero-length-and-one-element-arrays
>
> Tested-by: kernel test robot <lkp@xxxxxxxxx>

I find such tags enormously misleading, because the kernel test robot
didn't perform any functional testing of this change and honestly
that's the part I'm more concerned about rather than "does it build".

Anyone can check test the build.

> Link: https://lore.kernel.org/lkml/5f707198.PA1UCZ8MYozYZYAR%25lkp@xxxxxxxxx/
> Signed-off-by: Gustavo A. R. Silva <gustavoars@xxxxxxxxxx>

Applied.