[PATCH] pci: apple: Fix use of uninitialized variable

Tom Rini trini at konsulko.com
Sat Aug 23 16:53:29 CEST 2025


On Sat, Aug 23, 2025 at 04:03:56PM +0200, Mark Kettenis wrote:

> Replace use of uninitialized variable with the PCI device number
> in an error message as this is what we use elsewhere to derive
> the PCIe port number.  Use ofnode_read_pci_addr() to read the
> PCI address of the node and derive the device number from that.
> 
> Signed-off-by: Mark Kettenis <kettenis at openbsd.org>

Reported-by: Andrew Goodbody <andrew.goodbody at linaro.org>
patchwork should pick this up, no need for v2 unless there's real
feedback, thanks!

> ---
>  drivers/pci/pcie_apple.c | 18 +++++++++++++-----
>  1 file changed, 13 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/pci/pcie_apple.c b/drivers/pci/pcie_apple.c
> index 6a8e715d4b6..f5fda9835dc 100644
> --- a/drivers/pci/pcie_apple.c
> +++ b/drivers/pci/pcie_apple.c
> @@ -246,8 +246,9 @@ static int apple_pcie_setup_port(struct apple_pcie_priv *pcie, ofnode np)
>  {
>  	struct apple_pcie_port *port;
>  	struct gpio_desc reset;
> +	struct fdt_pci_addr pci_addr;
>  	fdt_addr_t addr;
> -	u32 stat, idx;
> +	u32 stat;
>  	int ret;
>  	char name[16];
>  
> @@ -259,12 +260,13 @@ static int apple_pcie_setup_port(struct apple_pcie_priv *pcie, ofnode np)
>  	if (!port)
>  		return -ENOMEM;
>  
> -	ret = ofnode_read_u32_index(np, "reg", 0, &idx);
> +	ret = ofnode_read_pci_addr(np, FDT_PCI_SPACE_CONFIG, "reg",
> +				   &pci_addr, NULL);
>  	if (ret)
>  		return ret;
>  
>  	/* Use the first reg entry to work out the port index */
> -	port->idx = idx >> 11;
> +	port->idx = PCI_DEV(pci_addr.phys_hi);
>  	port->pcie = pcie;
>  	port->reset = reset;
>  	port->np = np;
> @@ -333,9 +335,10 @@ static int apple_pcie_setup_port(struct apple_pcie_priv *pcie, ofnode np)
>  static int apple_pcie_probe(struct udevice *dev)
>  {
>  	struct apple_pcie_priv *pcie = dev_get_priv(dev);
> +	struct fdt_pci_addr pci_addr;
>  	fdt_addr_t addr;
>  	ofnode of_port;
> -	int i, ret;
> +	int ret;
>  
>  	pcie->hw = (struct reg_info *)dev_get_driver_data(dev);
>  
> @@ -357,9 +360,14 @@ static int apple_pcie_probe(struct udevice *dev)
>  	     of_port = ofnode_next_subnode(of_port)) {
>  		if (!ofnode_is_enabled(of_port))
>  			continue;
> +		ret = ofnode_read_pci_addr(of_port, FDT_PCI_SPACE_CONFIG,
> +					   "reg", &pci_addr, NULL);
> +		if (ret)
> +			continue;
>  		ret = apple_pcie_setup_port(pcie, of_port);
>  		if (ret) {
> -			dev_err(pcie->dev, "Port %d setup fail: %d\n", i, ret);
> +			dev_err(pcie->dev, "Port %d setup fail: %d\n",
> +				PCI_DEV(pci_addr.phys_hi), ret);
>  			return ret;
>  		}
>  	}
> -- 
> 2.50.1
> 

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20250823/35187a43/attachment.sig>


More information about the U-Boot mailing list