usb: gadget: uvc: Avoid -Wflex-array-member-not-at-end warnings
Subsystems (2)
PATCH 1/1 usb: gadget: uvc: Avoid -Wflex-array-member-not-at-end warnings
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally.
Move the conflicting declaration to the end of the structure. Notice that struct uvc_input_header_descriptor is a flexible structure --a structure that contains a flexible-array member.
With this, fix three of the following warnings:
drivers/usb/gadget/function/uvc_configfs.h:77:57: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]
--- drivers/usb/gadget/function/uvc_configfs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)
drivers/usb/gadget/function/uvc_configfs.h +3 -1
@@ -74,10 +74,12 @@ static inline struct uvcg_format *to_uvcg_format(struct config_item *item)struct uvcg_streaming_header {struct config_item item; -struct uvc_input_header_descriptor desc;unsigned linked;struct list_head formats;unsigned num_fmt; + +/* Must be last --ends in a flexible-array member. */ +struct uvc_input_header_descriptor desc; };static inline struct uvcg_streaming_header *to_uvcg_streaming_header (struct config_item *item)
Signature · 1 line
2.43.0
Quoted 24 lines · Gustavo A. R. Silva
-Wflex-array-member-not-at-end was introduced in GCC-14, and we are getting ready to enable it, globally.
Move the conflicting declaration to the end of the structure. Notice that
struct uvc_input_header_descriptoris a flexible structure --a structure that contains a flexible-array member.With this, fix three of the following warnings:
drivers/usb/gadget/function/uvc_configfs.h:77:57: warning: structure containing a flexible array member is not at the end of another structure [-Wflex-array-member-not-at-end]Signed-off-by Gustavo A. R. Silva <[email protected]>--- drivers/usb/gadget/function/uvc_configfs.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)drivers/usb/gadget/function/uvc_configfs.h +0
-0@@ -74,10 +74,12 @@ static inline struct uvcg_format *to_uvcg_format(struct config_item *item)struct uvcg_streaming_header {struct config_item item;
drivers/usb/gadget/function/uvc_configfs.h static inline struct uvcg_format *to_uvcg_format(struct config_item *item) · line 85
Quoted 10 lines
drivers/usb/gadget/function/uvc_configfs.h +3
-1-struct uvc_input_header_descriptor desc;unsigned linked;struct list_head formats;unsigned num_fmt; + +/* Must be last --ends in a flexible-array member. */ +struct uvc_input_header_descriptor desc; };static inline struct uvcg_streaming_header *to_uvcg_streaming_header (struct config_item *item)
This looks correct to me, and may be fixing some bugs -- I can see the allocation routine for this is already expecting the bmaControls (in desc) to be trailing:
/* bmaControls */
*size += h->num_fmt * UVCG_STREAMING_CONTROL_SIZE;Signature · 1 line
Kees Cook