Zero-length and one-element arrays are deprecated. Flexible-array members should be used instead. Flexible-array members are recommended because this is the way the kernel expects dynamically sized trailing elements to be declared. Refer to Documentation/process/deprecated.rst. Change the zero-length array, buf, in the struct gb_usb_hub_control_response to a flexible array. And add wLength as a member of the struct so that the struct is not a zero-sized struct. Issue found by flexible_array coccinelle script. Signed-off-by: Jaehee Park <jhpark1013@xxxxxxxxx> --- I have a question for the authors: I saw a fixme comment in the hub_control function in usb.c: / FIXME: handle unspecified lengths / I was wondering why this comment was left there? In this patch, I'm using this struct: struct gb_usb_hub_control_response { __le16 wLength; u8 buf[]; }; And instead of using response_size, I'm doing this: struct gb_usb_hub_control_response *response; And using sizeof(*response) as the input to gb_operation_create. Would the flexible array address the handling of unspecified lengths issue (in the fixme comment)? drivers/staging/greybus/usb.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/staging/greybus/usb.c b/drivers/staging/greybus/usb.c index 8e9d9d59a357..d0b2422401df 100644 --- a/drivers/staging/greybus/usb.c +++ b/drivers/staging/greybus/usb.c @@ -27,7 +27,8 @@ struct gb_usb_hub_control_request { }; struct gb_usb_hub_control_response { - u8 buf[0]; + __le16 wLength; + u8 buf[]; }; struct gb_usb_device { @@ -102,16 +103,14 @@ static int hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, u16 wIndex, struct gb_operation *operation; struct gb_usb_hub_control_request *request; struct gb_usb_hub_control_response *response; - size_t response_size; int ret; /* FIXME: handle unspecified lengths */ - response_size = sizeof(*response) + wLength; operation = gb_operation_create(dev->connection, GB_USB_TYPE_HUB_CONTROL, sizeof(*request), - response_size, + sizeof(*response), GFP_KERNEL); if (!operation) return -ENOMEM; -- 2.25.1 _______________________________________________ greybus-dev mailing list -- greybus-dev@xxxxxxxxxxxxxxxx To unsubscribe send an email to greybus-dev-leave@xxxxxxxxxxxxxxxx