Re: [PATCH] usb: host: replace zero-length array with flexible-array member

From: Greg KH
Date: Fri Apr 01 2022 - 05:10:51 EST


On Fri, Apr 01, 2022 at 08:03:37AM +0000, cgel.zte@xxxxxxxxx wrote:
> From: Lv Ruyi <lv.ruyi@xxxxxxxxxx>
>
> 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].
>
> [1] https://en.wikipedia.org/wiki/Flexible_array_member
> [2] https://www.kernel.org/doc/html/v5.16/process/deprecated.html#zero-length-and-one-element-arrays
>
> Reported-by: Zeal Robot <zealci@xxxxxxxxxx>
> Signed-off-by: Lv Ruyi <lv.ruyi@xxxxxxxxxx>
> ---
> drivers/usb/host/oxu210hp-hcd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/usb/host/oxu210hp-hcd.c b/drivers/usb/host/oxu210hp-hcd.c
> index b741670525e3..86f92aadeb0e 100644
> --- a/drivers/usb/host/oxu210hp-hcd.c
> +++ b/drivers/usb/host/oxu210hp-hcd.c
> @@ -169,7 +169,7 @@ struct ehci_regs {
> #define FLAG_CF (1<<0) /* true: we'll support "high speed" */
>
> /* PORTSC: offset 0x44 */
> - u32 port_status[0]; /* up to N_PORTS */
> + u32 port_status[]; /* up to N_PORTS */
> /* 31:23 reserved */
> #define PORT_WKOC_E (1<<22) /* wake on overcurrent (enable) */
> #define PORT_WKDISC_E (1<<21) /* wake on disconnect (enable) */
> --
> 2.25.1
>

How did you test to verify that this change is correct?