diff options
Diffstat (limited to 'events/evxfregn.c')
-rw-r--r-- | events/evxfregn.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/events/evxfregn.c b/events/evxfregn.c index 5f6893aaabc24..4fd637e31f7e3 100644 --- a/events/evxfregn.c +++ b/events/evxfregn.c @@ -141,20 +141,21 @@ AcpiInstallAddressSpaceHandler ( case ACPI_ADR_SPACE_PCI_CONFIG: case ACPI_ADR_SPACE_DATA_TABLE: - if (AcpiGbl_RegMethodsExecuted) + if (!AcpiGbl_RegMethodsExecuted) { - /* Run all _REG methods for this address space */ - - Status = AcpiEvExecuteRegMethods (Node, SpaceId); + /* We will defer execution of the _REG methods for this space */ + goto UnlockAndExit; } break; default: - - Status = AcpiEvExecuteRegMethods (Node, SpaceId); break; } + /* Run all _REG methods for this address space */ + + Status = AcpiEvExecuteRegMethods (Node, SpaceId); + UnlockAndExit: (void) AcpiUtReleaseMutex (ACPI_MTX_NAMESPACE); |