diff options
| author | Michael Brown | 2015-09-28 03:54:53 +0200 |
|---|---|---|
| committer | Michael Brown | 2015-09-28 04:20:59 +0200 |
| commit | 9ff6d08bf53679f9b513501a5dcf8816cb79deb2 (patch) | |
| tree | 6bd84ab863e0cea3fed4dd265fc8f04495d7ec2a /src/interface/linux/linux_pci.c | |
| parent | [efi] Work around broken 32-bit PE executable parsing in ImageHlp.dll (diff) | |
| download | ipxe-9ff6d08bf53679f9b513501a5dcf8816cb79deb2.tar.gz ipxe-9ff6d08bf53679f9b513501a5dcf8816cb79deb2.tar.xz ipxe-9ff6d08bf53679f9b513501a5dcf8816cb79deb2.zip | |
[efi] Avoid infinite loops when asked to stop non-existent devices
Calling EDK2's OpenProtocol() with attributes BY_DRIVER|EXCLUSIVE will
call DisconnectController() in a loop to attempt to dislodge any
existing openers with attributes BY_DRIVER. The loop will continue
indefinitely until either no such openers remain, or until
DisconnectController() returns an error.
If our driver binding protocol's Stop() method is ever called to
disconnect a device that we are not in fact driving, then return
EFI_DEVICE_ERROR rather than EFI_SUCCESS, in order to break this
potentially infinite loop.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/interface/linux/linux_pci.c')
0 files changed, 0 insertions, 0 deletions
