[U-Boot-Users] [PATCH] PCI_READ_VIA_DWORD_OP: initialize val parameter on fail

Shinya Kuribayashi shinya.kuribayashi at necel.com
Wed Jun 6 04:18:12 CEST 2007


>> I know that this is not your invention, and you  just  copy  existing
>> code,  but  I  think  injecting  C statements like this through macro
>> arguments is bad style and should be avoided. 
>>
>> I have to admit that I don't get wht you need all this "error_code"
>> trickery instead of simpley writing
>>
>> 	*val = -1;
>>
>>
>> Can you please change your patch like that,

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 at necel.com>

---

 drivers/pci.c |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Index: b/drivers/pci.c
===================================================================
--- a/drivers/pci.c
+++ b/drivers/pci.c
@@ -81,8 +81,10 @@ int pci_hose_read_config_##size##_via_dw
 {									\
 	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));		\
 									\




More information about the U-Boot mailing list