When compiling the drivers/usb/ folder with GCC version 12.1.0, the compilation fails with the following errors: drivers/usb/storage/ene_ub6250.c: In function ‘ms_lib_process_bootblock’: drivers/usb/storage/ene_ub6250.c:1050:44: error: array subscript ‘struct ms_bootblock_idi[0]’ is partly outside array bounds of ‘unsigned char[512]’ [-Werror=array-bounds] 1050 | if (le16_to_cpu(idi->wIDIgeneralConfiguration) != MS_IDI_GENERAL_CONF) | ^~ drivers/usb/storage/ene_ub6250.c: In function ‘ms_lib_process_bootblock’: drivers/usb/storage/ene_ub6250.c:1053:70: error: array subscript ‘struct ms_bootblock_idi[0]’ is partly outside array bounds of ‘unsigned char[512]’ [-Werror=array-bounds] 1053 | info->MS_Lib.BytesPerSector = le16_to_cpu(idi->wIDIbytesPerSector); | ^~ After these errors, when make waits for unfinished jobs, the following errors come: In function ‘xhci_mvebu_mbus_config’, inlined from ‘xhci_mvebu_mbus_init_quirk’ at drivers/usb/host/xhci-mvebu.c:66:2: drivers/usb/host/xhci-mvebu.c:37:28: error: array subscript 0 is outside array bounds of ‘const struct mbus_dram_window[0]’ [-Werror=array-bounds] 37 | writel(((cs->size - 1) & 0xffff0000) | (cs->mbus_attr << 8) | | ~~^~~~~~ drivers/usb/host/xhci-mvebu.c:37:59: error: array subscript 0 is outside array bounds of ‘const struct mbus_dram_window[0]’ [-Werror=array-bounds] 37 | writel(((cs->size - 1) & 0xffff0000) | (cs->mbus_attr << 8) | | ~~^~~~~~~~~~~ drivers/usb/host/xhci-mvebu.c:41:27: error: array subscript 0 is outside array bounds of ‘const struct mbus_dram_window[0]’ [-Werror=array-bounds] 41 | writel((cs->base & 0xffff0000), base + USB3_WIN_BASE(win)); | ~~^~~~~~ cc1: all warnings being treated as errors These errors also come when compiling gregkh/usb.git (usb-next branch) with the GCC version and the configuration mentioned above.
On Tue, May 24, 2022 at 02:58:45PM +0000, bugzilla-daemon@kernel.org wrote: > https://bugzilla.kernel.org/show_bug.cgi?id=216020 > > Bug ID: 216020 > Summary: drivers/usb/ folder compilation with allyesconfig > fails > Product: Drivers > Version: 2.5 > Kernel Version: 5.18 > Hardware: All > OS: Linux > Tree: Mainline > Status: NEW > Severity: normal > Priority: P1 > Component: USB > Assignee: drivers_usb@kernel-bugs.kernel.org > Reporter: kushagra765@outlook.com > Regression: No > > When compiling the drivers/usb/ folder with GCC version 12.1.0, the > compilation > fails with the following errors: There are numerous errors when building the kernel with gcc 12.1 right now. It is being worked on, please see the development efforts on the linux-kernel mailing list if you wish to help out. Also, patches for this are always gladly accepted, no need to file a bugzilla report for this. thanks, greg k-h
(In reply to Greg Kroah-Hartman from comment #1) > On Tue, May 24, 2022 at 02:58:45PM +0000, bugzilla-daemon@kernel.org wrote: > > https://bugzilla.kernel.org/show_bug.cgi?id=216020 > > > > Bug ID: 216020 > > Summary: drivers/usb/ folder compilation with allyesconfig > > fails > > Product: Drivers > > Version: 2.5 > > Kernel Version: 5.18 > > Hardware: All > > OS: Linux > > Tree: Mainline > > Status: NEW > > Severity: normal > > Priority: P1 > > Component: USB > > Assignee: drivers_usb@kernel-bugs.kernel.org > > Reporter: kushagra765@outlook.com > > Regression: No > > > > When compiling the drivers/usb/ folder with GCC version 12.1.0, the > > compilation > > fails with the following errors: > > There are numerous errors when building the kernel with gcc 12.1 right > now. It is being worked on, please see the development efforts on the > linux-kernel mailing list if you wish to help out. > > Also, patches for this are always gladly accepted, no need to file a > bugzilla report for this. Ok. > > thanks, > > greg k-h Thanks, Kushagra
The warnings about ene_ub6250.c are accurate. The driver uses (EntryOffset % 512) to index a 512-byte buffer and dereferences a 16-bit value at that location, without checking for proper alignment. It then dereferences another 16-bit value located 10 bytes farther on, without checking for overflow. Not having the specs for this type of device, I don't know how this is meant to work. Perhaps EntryOffset % 512 is always supposed to be 0. But perhaps not, so I don't want to make any hasty changes.