mirror of https://github.com/ipxe/ipxe.git
[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 <mcb30@ipxe.org>pull/27/merge
parent
4c5b7945c3
commit
f94d651632
|
@ -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 );
|
||||
|
|
Loading…
Reference in New Issue