| From ba9ef74b98da1f26fa8e48fa177bb2c827969369 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 8 May 2024 15:07:00 +0300 |
| Subject: MIPS: Routerboard 532: Fix vendor retry check code |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| From: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> |
| |
| [ Upstream commit ae9daffd9028f2500c9ac1517e46d4f2b57efb80 ] |
| |
| read_config_dword() contains strange condition checking ret for a |
| number of values. The ret variable, however, is always zero because |
| config_access() never returns anything else. Thus, the retry is always |
| taken until number of tries is exceeded. |
| |
| The code looks like it wants to check *val instead of ret to see if the |
| read gave an error response. |
| |
| Fixes: 73b4390fb234 ("[MIPS] Routerboard 532: Support for base system") |
| Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> |
| Signed-off-by: Thomas Bogendoerfer <tsbogend@alpha.franken.de> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| arch/mips/pci/ops-rc32434.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/mips/pci/ops-rc32434.c b/arch/mips/pci/ops-rc32434.c |
| index 874ed6df97683..34b9323bdabb0 100644 |
| --- a/arch/mips/pci/ops-rc32434.c |
| +++ b/arch/mips/pci/ops-rc32434.c |
| @@ -112,8 +112,8 @@ static int read_config_dword(struct pci_bus *bus, unsigned int devfn, |
| * gives them time to settle |
| */ |
| if (where == PCI_VENDOR_ID) { |
| - if (ret == 0xffffffff || ret == 0x00000000 || |
| - ret == 0x0000ffff || ret == 0xffff0000) { |
| + if (*val == 0xffffffff || *val == 0x00000000 || |
| + *val == 0x0000ffff || *val == 0xffff0000) { |
| if (delay > 4) |
| return 0; |
| delay *= 2; |
| -- |
| 2.43.0 |
| |