aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Brown <mcb30@ipxe.org>2021-06-11 14:46:54 +0100
committerMichael Brown <mcb30@ipxe.org>2021-06-11 15:14:21 +0100
commit3c040ad387099483102708bb1839110bc788cefb (patch)
tree8feb76fcf09ab48a3f62d7ac2e5017aa710c33e9
parent3dd1989ac0c0b699adcfe5c1c0efa2b229fd1e86 (diff)
downloadipxe-3c040ad387099483102708bb1839110bc788cefb.zip
ipxe-3c040ad387099483102708bb1839110bc788cefb.tar.gz
ipxe-3c040ad387099483102708bb1839110bc788cefb.tar.bz2
[efi] Veto the Itautec Ip4ConfigDxe driveritautec
The Ip4ConfigDxe driver bug that was observed on Dell systems in commit 64b4452 ("[efi] Blacklist the Dell Ip4ConfigDxe driver") has also been observed on systems with a manufacturer name of "Itautec S.A.". The symptoms of the bug are identical: an attempt to call DisconnectController() on the LOM device handle will lock up the system. Fix by extending the veto to cover the Ip4ConfigDxe driver for this manufacturer. Debugged-by: Celso Viana <celso.vianna@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
-rw-r--r--src/interface/efi/efi_veto.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/interface/efi/efi_veto.c b/src/interface/efi/efi_veto.c
index 6ff7898..b616539 100644
--- a/src/interface/efi/efi_veto.c
+++ b/src/interface/efi/efi_veto.c
@@ -362,7 +362,7 @@ static int efi_veto_driver ( EFI_HANDLE driver ) {
}
/**
- * Veto Dell Ip4ConfigDxe driver
+ * Veto Ip4ConfigDxe driver on some platforms
*
* @v binding Driver binding protocol
* @v loaded Loaded image protocol
@@ -372,19 +372,21 @@ static int efi_veto_driver ( EFI_HANDLE driver ) {
* @ret vetoed Driver is to be vetoed
*/
static int
-efi_veto_dell_ip4config ( EFI_DRIVER_BINDING_PROTOCOL *binding __unused,
- EFI_LOADED_IMAGE_PROTOCOL *loaded __unused,
- EFI_COMPONENT_NAME_PROTOCOL *wtf __unused,
- const char *manufacturer, const CHAR16 *name ) {
+efi_veto_ip4config ( EFI_DRIVER_BINDING_PROTOCOL *binding __unused,
+ EFI_LOADED_IMAGE_PROTOCOL *loaded __unused,
+ EFI_COMPONENT_NAME_PROTOCOL *wtf __unused,
+ const char *manufacturer, const CHAR16 *name ) {
static const CHAR16 ip4cfg[] = L"IP4 CONFIG Network Service Driver";
static const char *dell = "Dell Inc.";
+ static const char *itautec = "Itautec S.A.";
/* Check manufacturer and driver name */
if ( ! manufacturer )
return 0;
if ( ! name )
return 0;
- if ( strcmp ( manufacturer, dell ) != 0 )
+ if ( ( strcmp ( manufacturer, dell ) != 0 ) &&
+ ( strcmp ( manufacturer, itautec ) != 0 ) )
return 0;
if ( memcmp ( name, ip4cfg, sizeof ( ip4cfg ) ) != 0 )
return 0;
@@ -436,8 +438,8 @@ efi_veto_hp_xhci ( EFI_DRIVER_BINDING_PROTOCOL *binding __unused,
/** Driver vetoes */
static struct efi_veto efi_vetoes[] = {
{
- .name = "Dell Ip4Config",
- .veto = efi_veto_dell_ip4config,
+ .name = "Ip4Config",
+ .veto = efi_veto_ip4config,
},
{
.name = "HP Xhci",