pci_read_config_dword() can also return a positive PCIBIOS_* error code (e.g. PCIBIOS_DEVICE_NOT_FOUND for a disconnected device), but iwl_trans_pcie_read_config32() passes it through unchanged and iwl_dump_ini_config_iter() only checks for ret < 0. The error is missed, so the loop keeps reading and stores 0xffffffff in the dump. Convert the return value with pcibios_err_to_errno(). Fixes: f696a7ee254f ("iwlwifi: yoyo: add PCI config space region type") Signed-off-by: Yogesh Gaur --- drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c index 28b276c65952..cfaadddfe06a 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/gen1_2/trans.c @@ -2562,8 +2562,12 @@ int iwl_trans_pcie_read_mem_no_grab(struct iwl_trans *trans, u32 addr, int iwl_trans_pcie_read_config32(struct iwl_trans *trans, u32 ofs, u32 *val) { - return pci_read_config_dword(IWL_TRANS_GET_PCIE_TRANS(trans)->pci_dev, - ofs, val); + int ret; + + ret = pci_read_config_dword(IWL_TRANS_GET_PCIE_TRANS(trans)->pci_dev, + ofs, val); + + return pcibios_err_to_errno(ret); } #define IWL_FLUSH_WAIT_MS 2000 -- 2.34.1