linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] PCI: cadence: Fix erroneous early return from an iterator
@ 2021-02-16 20:59 Krzysztof Wilczyński
  2021-02-17 20:57 ` Bjorn Helgaas
  2021-02-18 17:00 ` Bjorn Helgaas
  0 siblings, 2 replies; 3+ messages in thread
From: Krzysztof Wilczyński @ 2021-02-16 20:59 UTC (permalink / raw)
  To: Tom Joseph; +Cc: Bjorn Helgaas, Lorenzo Pieralisi, Rob Herring, linux-pci

Function cdns_pcie_host_map_dma_ranges() iterates over a PCIe host
bridge DMA ranges using the resource_list_for_each_entry() iterator.

With every iteration it calls cdns_pcie_host_bar_config() on each entry
in the list, and performs error checking following execution of said
function.

Normally, should there be an error, the iteration would be interrupted
and the function would terminate returning an error, but following the
merge commit 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
that also had to resolve a merge conflict of the pcie-cadence-host.c
file, where an if-statement involved in the error handling has been
unintentionally altered causing a return statement to be outside of the
code block, and thus an undesired early return takes place on first
iteration.

Fix the if-statement and move the return statement inside the correct
code block so that the error checking works correctly, and to prevent
undesired early return.

Fixes: 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
Signed-off-by: Krzysztof Wilczyński <kw@linux.com>
---
 drivers/pci/controller/cadence/pcie-cadence-host.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c
index 811c1cb2e8de..1cb7cfc75d6e 100644
--- a/drivers/pci/controller/cadence/pcie-cadence-host.c
+++ b/drivers/pci/controller/cadence/pcie-cadence-host.c
@@ -321,9 +321,10 @@ static int cdns_pcie_host_map_dma_ranges(struct cdns_pcie_rc *rc)
 
 	resource_list_for_each_entry(entry, &bridge->dma_ranges) {
 		err = cdns_pcie_host_bar_config(rc, entry);
-		if (err)
+		if (err) {
 			dev_err(dev, "Fail to configure IB using dma-ranges\n");
-		return err;
+			return err;
+		}
 	}
 
 	return 0;
-- 
2.30.0


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] PCI: cadence: Fix erroneous early return from an iterator
  2021-02-16 20:59 [PATCH] PCI: cadence: Fix erroneous early return from an iterator Krzysztof Wilczyński
@ 2021-02-17 20:57 ` Bjorn Helgaas
  2021-02-18 17:00 ` Bjorn Helgaas
  1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Helgaas @ 2021-02-17 20:57 UTC (permalink / raw)
  To: Krzysztof Wilczyński
  Cc: Tom Joseph, Lorenzo Pieralisi, Rob Herring, linux-pci

On Tue, Feb 16, 2021 at 08:59:35PM +0000, Krzysztof Wilczyński wrote:
> Function cdns_pcie_host_map_dma_ranges() iterates over a PCIe host
> bridge DMA ranges using the resource_list_for_each_entry() iterator.
> 
> With every iteration it calls cdns_pcie_host_bar_config() on each entry
> in the list, and performs error checking following execution of said
> function.
> 
> Normally, should there be an error, the iteration would be interrupted
> and the function would terminate returning an error, but following the
> merge commit 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
> that also had to resolve a merge conflict of the pcie-cadence-host.c
> file, where an if-statement involved in the error handling has been
> unintentionally altered causing a return statement to be outside of the
> code block, and thus an undesired early return takes place on first
> iteration.
> 
> Fix the if-statement and move the return statement inside the correct
> code block so that the error checking works correctly, and to prevent
> undesired early return.
> 
> Fixes: 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
> Signed-off-by: Krzysztof Wilczyński <kw@linux.com>

Reviewed-by: Bjorn Helgaas <bhelgaas@google.com>

Ouch, I really botched that merge, sorry!

> ---
>  drivers/pci/controller/cadence/pcie-cadence-host.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c
> index 811c1cb2e8de..1cb7cfc75d6e 100644
> --- a/drivers/pci/controller/cadence/pcie-cadence-host.c
> +++ b/drivers/pci/controller/cadence/pcie-cadence-host.c
> @@ -321,9 +321,10 @@ static int cdns_pcie_host_map_dma_ranges(struct cdns_pcie_rc *rc)
>  
>  	resource_list_for_each_entry(entry, &bridge->dma_ranges) {
>  		err = cdns_pcie_host_bar_config(rc, entry);
> -		if (err)
> +		if (err) {
>  			dev_err(dev, "Fail to configure IB using dma-ranges\n");
> -		return err;
> +			return err;
> +		}
>  	}
>  
>  	return 0;
> -- 
> 2.30.0
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] PCI: cadence: Fix erroneous early return from an iterator
  2021-02-16 20:59 [PATCH] PCI: cadence: Fix erroneous early return from an iterator Krzysztof Wilczyński
  2021-02-17 20:57 ` Bjorn Helgaas
@ 2021-02-18 17:00 ` Bjorn Helgaas
  1 sibling, 0 replies; 3+ messages in thread
From: Bjorn Helgaas @ 2021-02-18 17:00 UTC (permalink / raw)
  To: Krzysztof Wilczyński
  Cc: Tom Joseph, Lorenzo Pieralisi, Rob Herring, linux-pci

On Tue, Feb 16, 2021 at 08:59:35PM +0000, Krzysztof Wilczyński wrote:
> Function cdns_pcie_host_map_dma_ranges() iterates over a PCIe host
> bridge DMA ranges using the resource_list_for_each_entry() iterator.
> 
> With every iteration it calls cdns_pcie_host_bar_config() on each entry
> in the list, and performs error checking following execution of said
> function.
> 
> Normally, should there be an error, the iteration would be interrupted
> and the function would terminate returning an error, but following the
> merge commit 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
> that also had to resolve a merge conflict of the pcie-cadence-host.c
> file, where an if-statement involved in the error handling has been
> unintentionally altered causing a return statement to be outside of the
> code block, and thus an undesired early return takes place on first
> iteration.
> 
> Fix the if-statement and move the return statement inside the correct
> code block so that the error checking works correctly, and to prevent
> undesired early return.
> 
> Fixes: 49e427e6bdd1 ("Merge branch 'pci/host-probe-refactor'")
> Signed-off-by: Krzysztof Wilczyński <kw@linux.com>

Applied to pci/host-probe-refactor for v5.12, thanks!

> ---
>  drivers/pci/controller/cadence/pcie-cadence-host.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/pci/controller/cadence/pcie-cadence-host.c b/drivers/pci/controller/cadence/pcie-cadence-host.c
> index 811c1cb2e8de..1cb7cfc75d6e 100644
> --- a/drivers/pci/controller/cadence/pcie-cadence-host.c
> +++ b/drivers/pci/controller/cadence/pcie-cadence-host.c
> @@ -321,9 +321,10 @@ static int cdns_pcie_host_map_dma_ranges(struct cdns_pcie_rc *rc)
>  
>  	resource_list_for_each_entry(entry, &bridge->dma_ranges) {
>  		err = cdns_pcie_host_bar_config(rc, entry);
> -		if (err)
> +		if (err) {
>  			dev_err(dev, "Fail to configure IB using dma-ranges\n");
> -		return err;
> +			return err;
> +		}
>  	}
>  
>  	return 0;
> -- 
> 2.30.0
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-02-18 17:14 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-02-16 20:59 [PATCH] PCI: cadence: Fix erroneous early return from an iterator Krzysztof Wilczyński
2021-02-17 20:57 ` Bjorn Helgaas
2021-02-18 17:00 ` Bjorn Helgaas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).