summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/components/events/evxfgpe.c
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2012-07-11 23:18:35 +0000
committerjkim <jkim@FreeBSD.org>2012-07-11 23:18:35 +0000
commitad8778768e1e16840c59eb761f80b57724347273 (patch)
tree6596f71678de564fb72419b65b5035f612b8cffe /sys/contrib/dev/acpica/components/events/evxfgpe.c
parent6975aedf109ac250b4d7e9b7162c8db4e07fec47 (diff)
parentdbd90a99cde8c4a942a41f095faa72f479694173 (diff)
downloadFreeBSD-src-ad8778768e1e16840c59eb761f80b57724347273.zip
FreeBSD-src-ad8778768e1e16840c59eb761f80b57724347273.tar.gz
Merge ACPICA 20120711.
Diffstat (limited to 'sys/contrib/dev/acpica/components/events/evxfgpe.c')
-rw-r--r--sys/contrib/dev/acpica/components/events/evxfgpe.c14
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);
OpenPOWER on IntegriCloud