diff options
author | Shinya Kuribayashi <shinya.kuribayashi@necel.com> | 2007-08-17 03:43:44 (GMT) |
---|---|---|
committer | Wolfgang Denk <wd@denx.de> | 2007-08-18 19:38:45 (GMT) |
commit | 815b5bd5b18569917c3e04b9757511e6ed23b9f6 (patch) | |
tree | 0e3790756853324a24fd2f6eba2cecfc28ad8a70 | |
parent | d35b508a55508535b6e8445b718585d27df733d3 (diff) | |
download | u-boot-815b5bd5b18569917c3e04b9757511e6ed23b9f6.tar.xz |
PCI_READ_VIA_DWORD_OP: Fix *val uninitialized bug
This patch has been sent on:
- 6 Jun 2007
Many users of PCI config read routines tend to ignore the function
ret value, and are only concerned about the contents of *val. Based
on this, pci_hose_read_config_{byte,word}_via_dword should initialize
the *val on dword read error.
Without this fix, for example, we'll go on scanning bus with vendor or
header_type uninitialized. This brings many unnecessary config trials.
Signed-off-by: Shinya Kuribayashi <shinya.kuribayashi@necel.com>
-rw-r--r-- | drivers/pci.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/pci.c b/drivers/pci.c index 4158919..50ca6b0 100644 --- a/drivers/pci.c +++ b/drivers/pci.c @@ -82,8 +82,10 @@ int pci_hose_read_config_##size##_via_dword(struct pci_controller *hose,\ { \ u32 val32; \ \ - if (pci_hose_read_config_dword(hose, dev, offset & 0xfc, &val32) < 0)\ + if (pci_hose_read_config_dword(hose, dev, offset & 0xfc, &val32) < 0) { \ + *val = -1; \ return -1; \ + } \ \ *val = (val32 >> ((offset & (int)off_mask) * 8)); \ \ |