
Hello Marek,
I tried to reproduce the problem with tbs2910_defconfig but unfortunately the USB sub-system does not build at all with GCC 9.2.1.
The comments in include/linux/usb/ch9.h say that the __packed attribute is needed.
The problem could be solved by replacing cpu_to_le16() by a function working on byte buffers. What are your thoughts?
In file included from drivers/usb/gadget/g_dnl.c:24: drivers/usb/gadget/composite.c: In function ‘get_string’: drivers/usb/gadget/composite.c:545:23: error: taking address of packed member of ‘struct usb_string_descriptor’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 545 | collect_langs(sp, s->wData); | ~^~~~~~~ drivers/usb/gadget/composite.c:550:24: error: taking address of packed member of ‘struct usb_string_descriptor’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 550 | collect_langs(sp, s->wData); | ~^~~~~~~ drivers/usb/gadget/composite.c:555:25: error: taking address of packed member of ‘struct usb_string_descriptor’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 555 | collect_langs(sp, s->wData); | ~^~~~~~~ drivers/usb/gadget/composite.c: In function ‘bos_desc’: drivers/usb/gadget/composite.c:708:15: error: taking address of packed member of ‘struct usb_bos_descriptor’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 708 | le16_add_cpu(&bos->wTotalLength, USB_DT_USB_EXT_CAP_SIZE); | ^~~~~~~~~~~~~~~~~~ drivers/usb/gadget/composite.c:724:16: error: taking address of packed member of ‘struct usb_bos_descriptor’ may result in an unaligned pointer value [-Werror=address-of-packed-member] 724 | le16_add_cpu(&bos->wTotalLength, USB_DT_USB_SS_CAP_SIZE); |
Best regards
Heinrich