aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOlivier Cochard <olivier@FreeBSD.org>2026-03-03 23:05:04 +0000
committerOlivier Cochard <olivier@FreeBSD.org>2026-03-03 23:08:23 +0000
commit4d876fc5fc427f9e4a110da5cc2ce62a21998b6c (patch)
treef7e1fbf320def2dcb21903512f263770bf75613f
parentf268f95955f5f0f91f4d39e13bcd69a24e0d8ce4 (diff)
acpi_spmc: fix revision check reading name as integer
In acpi_spmc_get_constraints_spec(), the revision of the device constraint detail package was mistakenly read from constraint_obj->Package.Elements[0], which is the device name (a string), instead of from the detail sub-package's first element. Move the initialisation of 'detail' before the revision check and read the revision from detail->Package.Elements[0] as the comment already states Approved by: obiwac Differential Revision: https://reviews.freebsd.org/D55639 Sponsored by: Netflix
-rw-r--r--sys/dev/acpica/acpi_spmc.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/acpica/acpi_spmc.c b/sys/dev/acpica/acpi_spmc.c
index e8ed14fdcb1b..6b4363bb364d 100644
--- a/sys/dev/acpica/acpi_spmc.c
+++ b/sys/dev/acpica/acpi_spmc.c
@@ -322,11 +322,12 @@ acpi_spmc_get_constraints_spec(struct acpi_spmc_softc *sc, ACPI_OBJECT *object)
return (ENOMEM);
}
+ detail = &constraint_obj->Package.Elements[2];
/*
* The first element in the device constraint detail package is
* the revision, and should always be zero.
*/
- revision = constraint_obj->Package.Elements[0].Integer.Value;
+ revision = detail->Package.Elements[0].Integer.Value;
if (revision != 0) {
device_printf(sc->dev, "Unknown revision %d for "
"device constraint detail package\n", revision);
@@ -334,7 +335,6 @@ acpi_spmc_get_constraints_spec(struct acpi_spmc_softc *sc, ACPI_OBJECT *object)
continue;
}
- detail = &constraint_obj->Package.Elements[2];
constraint_package = &detail->Package.Elements[1];
constraint->lpi_uid =