summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryasuoka <yasuoka@openbsd.org>2021-03-07 22:53:46 +0000
committeryasuoka <yasuoka@openbsd.org>2021-03-07 22:53:46 +0000
commitc1053d6a5a6ff0c23fa9cda5b6bd2d6feb9d82b6 (patch)
tree5bb5e4d5948c397f3892c1cccb4b528905d51c6d
parentuse the mx hostname for sni on outgoing connection, not the reverse (diff)
downloadwireguard-openbsd-c1053d6a5a6ff0c23fa9cda5b6bd2d6feb9d82b6.tar.xz
wireguard-openbsd-c1053d6a5a6ff0c23fa9cda5b6bd2d6feb9d82b6.zip
Fix aml_store() to work properly when the lvalue is a reference of
LocalX. In that case, resolving the reference must be done before resetting the LocalX variable. test daniel ok kettenis
-rw-r--r--sys/dev/acpi/dsdt.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/acpi/dsdt.c b/sys/dev/acpi/dsdt.c
index 461c810a878..0cbeeb43d08 100644
--- a/sys/dev/acpi/dsdt.c
+++ b/sys/dev/acpi/dsdt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dsdt.c,v 1.257 2020/12/17 17:57:19 kettenis Exp $ */
+/* $OpenBSD: dsdt.c,v 1.258 2021/03/07 22:53:46 yasuoka Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
*
@@ -2961,11 +2961,12 @@ aml_store(struct aml_scope *scope, struct aml_value *lhs , int64_t ival,
aml_rwfield(rhs, 0, rhs->v_field.bitlen, &tmp, ACPI_IOREAD);
rhs = &tmp;
}
+
+ lhs = aml_gettgt(lhs, AMLOP_STORE);
+
/* Store to LocalX: free value */
if (lhs->stack >= AMLOP_LOCAL0 && lhs->stack <= AMLOP_LOCAL7)
aml_freevalue(lhs);
-
- lhs = aml_gettgt(lhs, AMLOP_STORE);
switch (lhs->type) {
case AML_OBJTYPE_UNINITIALIZED:
aml_copyvalue(lhs, rhs);