• 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 been adjusted to fix this
    apparent typo.
    
    Fixes: 9df23151 ("usb: ehci: Add new EHCI driver for Broadcom STB SoC's")
    Cc: Al Cooper <alcooperx@gmail.com>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Cc: linux-usb@vger.kernel.org
    Cc: bcm-kernel-feedback-list@broadcom.com
    Suggested-by: default avatarArnd Bergmann <arnd@arndb.de>
    Acked-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarKees Cook <keescook@chromium.org>
    Link: https://lore.kernel.org/r/20210818173018.2259231-3-keescook@chromium.orgSigned-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    e4788edc
ehci-brcm.c 6.72 KB