From f94d6516326ba05928602ab1de2e4e713cbe35ee Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 4 Sep 2014 16:00:11 +0100 Subject: [PATCH] [efi] Avoid returning uninitialised data from PCI configuration space reads Under UEFI, reads from PCI configuration space may fail. If this happens, we should return all-ones (which will mimic the behaviour of an absent PCI device). Signed-off-by: Michael Brown --- src/include/ipxe/efi/efi_pci_api.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/include/ipxe/efi/efi_pci_api.h b/src/include/ipxe/efi/efi_pci_api.h index 1bc43e30..498a0388 100644 --- a/src/include/ipxe/efi/efi_pci_api.h +++ b/src/include/ipxe/efi/efi_pci_api.h @@ -55,6 +55,7 @@ static inline __always_inline int PCIAPI_INLINE ( efi, pci_read_config_byte ) ( struct pci_device *pci, unsigned int where, uint8_t *value ) { + *value = 0xff; return efipci_read ( pci, EFIPCI_LOCATION ( where, EFIPCI_WIDTH_BYTE ), value ); @@ -72,6 +73,7 @@ static inline __always_inline int PCIAPI_INLINE ( efi, pci_read_config_word ) ( struct pci_device *pci, unsigned int where, uint16_t *value ) { + *value = 0xffff; return efipci_read ( pci, EFIPCI_LOCATION ( where, EFIPCI_WIDTH_WORD ), value ); @@ -89,6 +91,7 @@ static inline __always_inline int PCIAPI_INLINE ( efi, pci_read_config_dword ) ( struct pci_device *pci, unsigned int where, uint32_t *value ) { + *value = 0xffffffffUL; return efipci_read ( pci, EFIPCI_LOCATION ( where, EFIPCI_WIDTH_DWORD ), value );