From nobody Sat Sep 12 11:35:22 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4hhq8q2hTRz6s0sp for ; Sat, 12 Sep 2026 11:35:23 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "YR2" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4hhq8p5qnnz4SW6 for ; Sat, 12 Sep 2026 11:35:22 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789212922; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Huts+Pzn9hibNYIt/3Ds27Mlh2YhNanxq/FweAchUEY=; b=XKtOdxwUjQ9Vau3auBCpLjlfe/BkF9XHqAeNAiR9zXb0w+GbcyAcOEfGDV0AuqoHECuD/W W2Qx7JfhFDW+fJsUepxNeMLMWRUwkdlPbgt6VQj3XTjzuvB0tJjyofXExqk+v9aRNPiDl7 P5dmJ1vdkaxxZ7N5SDuxpK1XBuHViUC9I3B6NQRSvKyFZ5vZmfib65wlxygeAQ3AQzzIss AbkBLQXR4HkPs5hiFej6SWCg1wZZEAL0rL2Ko4X8zStGE1Qdd+8z3FF3pTiolj3bGTveGI CCBBRp2vUPf/ky44oZ2taNb7mVUGGC1ejVXKMrnp8rWOH/65ll019PYs85tE4g== ARC-Seal: i=1; a=rsa-sha256; d=freebsd.org; s=dkim; cv=none; t=1789212922; b=jgisZoBPo/oqfKSIZRqDPKfeRWQp8c+vDhUvvGVFkZUHvdxXKnyvHLN1tPzgcgabDmaN3O 9oGo3acTJnzMIIixOf2hTtc2n768J9OkWihm3NfAqrxpItm4U3Tl5iWCjF+SqWh7xSyxn5 OhjYMLo/5YMHwybbKY6toiMRkoh7tBkafgPFGgMusvAt514rHnSgeDPDnwma2pyjggS2/c fT2qOrJG63SLid72IlkNN/V9r8an+mrjtfH357LqJ3gRA1mhfNuny2dyCz6G5kcJME81Vt uMh7yyTn13ly7eTKBYctz6Syi6oHN4gDckYRrerZbppoWTXKxr+AYK4HQbxm5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1789212922; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=Huts+Pzn9hibNYIt/3Ds27Mlh2YhNanxq/FweAchUEY=; b=l56t5fKaRXUZ6vholNRXwUKMQoZwoTnKhUdFyZQbsh9y0me0eJoyl0TsYSs8G53GhF51tF HxOedxeJk/t2MjQfiF+KO5bqNpsbcqGDty5/Xq5k5BhC7jvKutgpZJJivz4QiWE8O0vISX bR0YWKHUUdKhtphqYgt+z0r6ahTUmKMWcMB5B/aSiJ3EPz9ZQG/QMNW9uMDFE8FcwZiN3T CBrEniphoIDMDv9LTnpf+ac1RmmxJEyUuCktZuDIkDpTe3/BKhmqUhWyLAPc/owQEd8fTr 7wl3CiJyhuCzn9Pz2pyr5p87aZYy1Urf0MyQh/NuB1noO29YQkrpqky0T6GhoA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4hhq8p4f5Xzx8C for ; Sat, 12 Sep 2026 11:35:22 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 468a5 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 12 Sep 2026 11:35:22 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Aymeric Wibo Subject: git: a1e236e9d610 - main - acpi_spmc: Check AMD constraint packages List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: obiwac X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: a1e236e9d610be69c9fcde0162a09385a2feb49f Auto-Submitted: auto-generated Date: Sat, 12 Sep 2026 11:35:22 +0000 Message-Id: <6aa538fa.468a5.2b5d6e91@gitrepo.freebsd.org> The branch main has been updated by obiwac: URL: https://cgit.FreeBSD.org/src/commit/?id=a1e236e9d610be69c9fcde0162a09385a2feb49f commit a1e236e9d610be69c9fcde0162a09385a2feb49f Author: Aymeric Wibo AuthorDate: 2026-09-10 12:10:10 +0000 Commit: Aymeric Wibo CommitDate: 2026-09-12 11:29:00 +0000 acpi_spmc: Check AMD constraint packages Also match behaviour with Intel constraint parsing by skipping malformed constraints instead of failing hard. Reviewed by: olce Sponsored by: The FreeBSD Foundation Event: EuroBSDCon Devsummit 2026 Differential Revision: https://reviews.freebsd.org/D59568 --- sys/dev/acpica/acpi_spmc.c | 44 ++++++++++++++++++++++++++++++++++++++------ 1 file changed, 38 insertions(+), 6 deletions(-) diff --git a/sys/dev/acpica/acpi_spmc.c b/sys/dev/acpica/acpi_spmc.c index d91df4d56afc..32456852052c 100644 --- a/sys/dev/acpica/acpi_spmc.c +++ b/sys/dev/acpica/acpi_spmc.c @@ -724,6 +724,18 @@ acpi_spmc_parse_constraints_amd(struct acpi_spmc_softc *sc, ACPI_OBJECT *object) struct acpi_spmc_constraint *constraint; ACPI_OBJECT *name_obj; + if (object->Type != ACPI_TYPE_PACKAGE) { + device_printf(sc->dev, "AMD: Constraints: object not " + "package.\n"); + return (ENXIO); + } + if (object->Package.Count != 3) { + device_printf(sc->dev, + "AMD: Constraints: Package has %d elements\n", + object->Package.Count); + return (ENXIO); + } + /* * First element in the package is unknown. * Second element is the number of device constraints. @@ -732,6 +744,11 @@ acpi_spmc_parse_constraints_amd(struct acpi_spmc_softc *sc, ACPI_OBJECT *object) constraint_count = object->Package.Elements[1].Integer.Value; constraints = &object->Package.Elements[2]; + if (constraints->Type != ACPI_TYPE_PACKAGE) { + device_printf(sc->dev, + "AMD: Constraints: Third element not a package\n"); + return (ENXIO); + } if (constraints->Package.Count != constraint_count) { device_printf(sc->dev, "AMD: Constraints: Count mismatch (%d to %zu)\n", @@ -743,28 +760,43 @@ acpi_spmc_parse_constraints_amd(struct acpi_spmc_softc *sc, ACPI_OBJECT *object) sc->constraints = malloc(constraint_count * sizeof *sc->constraints, M_TEMP, M_WAITOK | M_ZERO); - for (size_t i = 0; i < constraint_count; i++) { + for (size_t i = 0, j = 0; i < constraint_count; i++) { /* Parse the constraint package. */ constraint_obj = &constraints->Package.Elements[i]; + constraint = &sc->constraints[j]; + + if (constraint_obj->Type != ACPI_TYPE_PACKAGE) { + device_printf(sc->dev, + "AMD: Constraint %zu not a package\n", i); + goto skip; + } if (constraint_obj->Package.Count != 4) { device_printf(sc->dev, "AMD: Constraint %zu has %d elements, not 4\n", i, constraint_obj->Package.Count); - acpi_spmc_free_constraints(sc); - return (ENXIO); + goto skip; } - constraint = &sc->constraints[i]; constraint->enabled = constraint_obj->Package.Elements[0].Integer.Value; - name_obj = &constraint_obj->Package.Elements[1]; - constraint->name = strdup(name_obj->String.Pointer, M_TEMP); + if (name_obj->Type != ACPI_TYPE_STRING) { + device_printf(sc->dev, + "AMD: Constraint %zu's name is not string.\n", i); + goto skip; + } + + constraint->name = strdup(name_obj->String.Pointer, M_TEMP); constraint->function_states = constraint_obj->Package.Elements[2].Integer.Value; constraint->min_d_state = constraint_obj->Package.Elements[3].Integer.Value; + + j++; + continue; +skip: + sc->constraint_count--; } return (0);