summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryasuoka <yasuoka@openbsd.org>2021-03-18 00:17:26 +0000
committeryasuoka <yasuoka@openbsd.org>2021-03-18 00:17:26 +0000
commit73a5351e91094758b06b1c118e6d5df4cfd48358 (patch)
treef5bf6bd5866acc7524c19367b4518e3a3cfdb5e8
parentWhen devices have claimed multiple report ids, only detach and send (diff)
downloadwireguard-openbsd-73a5351e91094758b06b1c118e6d5df4cfd48358.tar.xz
wireguard-openbsd-73a5351e91094758b06b1c118e6d5df4cfd48358.zip
Fix previous (1.258). It breaks if localX itself is an object reference.
found and test by Rafael Avila de Espindola ok kettenis
-rw-r--r--sys/dev/acpi/dsdt.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/dev/acpi/dsdt.c b/sys/dev/acpi/dsdt.c
index e44f449dc12..f25ab28968a 100644
--- a/sys/dev/acpi/dsdt.c
+++ b/sys/dev/acpi/dsdt.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: dsdt.c,v 1.260 2021/03/10 22:20:44 tobhe Exp $ */
+/* $OpenBSD: dsdt.c,v 1.261 2021/03/18 00:17:26 yasuoka Exp $ */
/*
* Copyright (c) 2005 Jordan Hargrave <jordan@openbsd.org>
*
@@ -2961,10 +2961,13 @@ 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;
}
+ /* Store to LocalX: free value */
+ if (lhs->stack >= AMLOP_LOCAL0 && lhs->stack <= AMLOP_LOCAL7)
+ aml_freevalue(lhs);
lhs = aml_gettgt(lhs, AMLOP_STORE);
- /* Store to LocalX: free value */
+ /* Store to LocalX: free value again */
if (lhs->stack >= AMLOP_LOCAL0 && lhs->stack <= AMLOP_LOCAL7)
aml_freevalue(lhs);
switch (lhs->type) {