PCI: altera: fix loop in tlp_read_packet()
Subsystems (2)
PATCH 1/1 PCI: altera: fix loop in tlp_read_packet()
The problem is that TLP_LOOP is 500 and the "loop" variable was a u8 so "loop < TLP_LOOP" is always true. We only need this condition to work if there is a problem so it would have been easy to miss this in testing. Anyway, lets just make it a normal for loop with "int i" instead of over thinking things and making it complicated.
drivers/pci/host/pcie-altera.c +2 -2
@@ -166,16 +166,16 @@ static bool altera_pcie_valid_config(struct altera_pcie *pcie,static int tlp_read_packet (struct altera_pcie *pcie,u32 *value) { -u8 loop;bool sop =0 ;u32 ctrl;u32 reg0, reg1; +int i;/* * Minimum 2 loops to read TLP headers and 1 loop to read data * payload. */ -for (loop =0 ; loop <TLP_LOOP ; loop++) { +for (i =0 ; i <TLP_LOOP ; i++) { ctrl =cra_readl (pcie,RP_RXCPL_STATUS );if ((ctrl &RP_RXCPL_SOP ) || (ctrl &RP_RXCPL_EOP ) || sop) { reg0 =cra_readl (pcie,RP_RXCPL_REG0 );
Quoted 9 lines · Dan Carpenter
The problem is that
TLP_LOOPis 500 and the "loop" variable was a u8 so "loop <TLP_LOOP" is always true. We only need this condition to work if there is a problem so it would have been easy to miss this in testing. Anyway, lets just make it a normal for loop with "int i" instead of over thinking things and making it complicated.Fixes 6bb4dd154ae8 ('PCI: altera: Add Altera PCIe host controller driver')Signed-off-by Dan Carpenter <[email protected]>
Thanks for the fix.
Regards
Ley Foon
Quoted 8 lines · Dan Carpenter
The problem is that
TLP_LOOPis 500 and the "loop" variable was a u8 so "loop <TLP_LOOP" is always true. We only need this condition to work if there is a problem so it would have been easy to miss this in testing. Anyway, lets just make it a normal for loop with "int i" instead of over thinking things and making it complicated.Fixes 6bb4dd154ae8 ('PCI: altera: Add Altera PCIe host controller driver')Signed-off-by Dan Carpenter <[email protected]>
Applied with Ley Foon's ack to pci/host-altera for v4.5, thanks!
Quoted 28 lines
drivers/pci/host/pcie-altera.c +2
-3@@ -166,16 +166,16 @@ static bool altera_pcie_valid_config(struct altera_pcie *pcie,static int tlp_read_packet (struct altera_pcie *pcie,u32 *value) { -u8 loop;bool sop =0 ;u32 ctrl;u32 reg0, reg1; +int i;/* * Minimum 2 loops to read TLP headers and 1 loop to read data * payload. */ -for (loop =0 ; loop <TLP_LOOP ; loop++) { +for (i =0 ; i <TLP_LOOP ; i++) { ctrl =cra_readl (pcie,RP_RXCPL_STATUS );if ((ctrl &RP_RXCPL_SOP ) || (ctrl &RP_RXCPL_EOP ) || sop) { reg0 =cra_readl (pcie,RP_RXCPL_REG0 ); --To unsubscribe from this list: send the line "unsubscribe linux-pci" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html