mirror of
https://github.com/ipxe/ipxe
synced 2025-12-09 20:09:53 +03:00
[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>
This commit is contained in:
@@ -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 );
|
||||
|
||||
Reference in New Issue
Block a user