[PATCH] usb: xhci-pci: Check for errors from dm_pci_map_bar()
Bin Meng
bmeng.cn at gmail.com
Mon Jan 18 12:23:55 CET 2021
On Mon, Jan 18, 2021 at 7:13 PM Pali Rohár <pali at kernel.org> wrote:
>
> Function dm_pci_map_bar() may fail and returns NULL. Check this to prevent
> dereferencing a NULL pointer.
>
> In xhci-pci this may happen when board does not enable CONFIG_PCI_PNP and
> PCI_BASE_ADDRESS_0 contains unconfigured zero address.
>
> Signed-off-by: Pali Rohár <pali at kernel.org>
> ---
> drivers/usb/host/xhci-pci.c | 13 +++++++++++--
> 1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c
> index 2b445f21b5..7f5be95f6c 100644
> --- a/drivers/usb/host/xhci-pci.c
> +++ b/drivers/usb/host/xhci-pci.c
> @@ -13,7 +13,7 @@
> #include <usb.h>
> #include <usb/xhci.h>
>
> -static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
> +static int xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
> struct xhci_hcor **ret_hcor)
nits: please make "struct xhci_hcor" align to "struct udevice" above
> {
> struct xhci_hccr *hccr;
> @@ -22,6 +22,11 @@ static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
>
> hccr = (struct xhci_hccr *)dm_pci_map_bar(dev,
> PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
> + if (!hccr) {
> + printf("XHCI-PCI init cannot map PCI mem bar\n");
nits: use lower case "xhci-pci"
> + return -EIO;
> + }
> +
> hcor = (struct xhci_hcor *)((uintptr_t) hccr +
> HC_LENGTH(xhci_readl(&hccr->cr_capbase)));
>
> @@ -35,14 +40,18 @@ static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
> dm_pci_read_config32(dev, PCI_COMMAND, &cmd);
> cmd |= PCI_COMMAND_MASTER;
> dm_pci_write_config32(dev, PCI_COMMAND, cmd);
> + return 0;
> }
>
> static int xhci_pci_probe(struct udevice *dev)
> {
> struct xhci_hccr *hccr;
> struct xhci_hcor *hcor;
> + int ret;
>
> - xhci_pci_init(dev, &hccr, &hcor);
> + ret = xhci_pci_init(dev, &hccr, &hcor);
> + if (ret)
> + return ret;
>
> return xhci_register(dev, hccr, hcor);
> }
Other than above,
Reviewed-by: Bin Meng <bmeng.cn at gmail.com>
More information about the U-Boot
mailing list