diff options
author | jkim <jkim@FreeBSD.org> | 2012-07-11 23:18:35 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2012-07-11 23:18:35 +0000 |
commit | ad8778768e1e16840c59eb761f80b57724347273 (patch) | |
tree | 6596f71678de564fb72419b65b5035f612b8cffe /sys/contrib/dev/acpica/components/events | |
parent | 6975aedf109ac250b4d7e9b7162c8db4e07fec47 (diff) | |
parent | dbd90a99cde8c4a942a41f095faa72f479694173 (diff) | |
download | FreeBSD-src-ad8778768e1e16840c59eb761f80b57724347273.zip FreeBSD-src-ad8778768e1e16840c59eb761f80b57724347273.tar.gz |
Merge ACPICA 20120711.
Diffstat (limited to 'sys/contrib/dev/acpica/components/events')
-rw-r--r-- | sys/contrib/dev/acpica/components/events/evxfgpe.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/contrib/dev/acpica/components/events/evxfgpe.c b/sys/contrib/dev/acpica/components/events/evxfgpe.c index 3a43733..7befa99d 100644 --- a/sys/contrib/dev/acpica/components/events/evxfgpe.c +++ b/sys/contrib/dev/acpica/components/events/evxfgpe.c @@ -83,7 +83,7 @@ AcpiUpdateAllGpes ( ACPI_STATUS Status; - ACPI_FUNCTION_TRACE (AcpiUpdateGpes); + ACPI_FUNCTION_TRACE (AcpiUpdateAllGpes); Status = AcpiUtAcquireMutex (ACPI_MTX_EVENTS); @@ -298,7 +298,8 @@ AcpiSetupGpeForWake ( ACPI_STATUS Status; ACPI_GPE_EVENT_INFO *GpeEventInfo; ACPI_NAMESPACE_NODE *DeviceNode; - ACPI_GPE_NOTIFY_INFO *NewNotify, *Notify; + ACPI_GPE_NOTIFY_INFO *Notify; + ACPI_GPE_NOTIFY_INFO *NewNotify; ACPI_CPU_FLAGS Flags; @@ -334,6 +335,11 @@ AcpiSetupGpeForWake ( return_ACPI_STATUS (AE_BAD_PARAMETER); } + /* + * Allocate a new notify object up front, in case it is needed. + * Memory allocation while holding a spinlock is a big no-no + * on some hosts. + */ NewNotify = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_GPE_NOTIFY_INFO)); if (!NewNotify) { @@ -401,8 +407,12 @@ AcpiSetupGpeForWake ( GpeEventInfo->Flags |= ACPI_GPE_CAN_WAKE; Status = AE_OK; + UnlockAndExit: AcpiOsReleaseLock (AcpiGbl_GpeLock, Flags); + + /* Delete the notify object if it was not used above */ + if (NewNotify) { ACPI_FREE (NewNotify); |