• Kees Cook's avatar
    USB: EHCI: Add alias for Broadcom INSNREG · e4788edc
    Kees Cook authored
    Refactor struct ehci_regs to avoid accessing beyond the end of
    port_status. This change results in no difference in the final
    object code.
    
    Avoids several warnings when building with -Warray-bounds:
    
    drivers/usb/host/ehci-brcm.c: In function 'ehci_brcm_reset':
    drivers/usb/host/ehci-brcm.c:113:32: warning: array subscript 16 is above array bounds of 'u32[15]' {aka 'unsigned int[15]'} [-Warray-bounds]
      113 |  ehci_writel(ehci, 0x00800040, &ehci->regs->port_status[0x10]);
          |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    In file included from drivers/usb/host/ehci.h:274,
                     from drivers/usb/host/ehci-brcm.c:15:
    ./include/linux/usb/ehci_def.h:132:7: note: while referencing 'port_status'
      132 |   u32 port_status[HCS_N_PORTS_MAX];
          |       ^~~~~~~~~~~
    
    Note that the documentation around this proprietary register was
    confusing. If "USB_EHCI_INSNREG00" is at port_status[0x0f], its offset
    would be 0x80 (not 0x90). The comments have ...
    e4788edc
ehci-brcm.c 6.72 KB