From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F0F04C43458 for ; Wed, 8 Jul 2026 09:00:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender:List-Subscribe:List-Help :List-Post:List-Archive:List-Unsubscribe:List-Id:Cc:To:In-Reply-To:References :Message-Id:Content-Transfer-Encoding:Content-Type:MIME-Version:Subject:Date: From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=y1yMKaThBH4by4GQ13G90z2f3G5Qb2br9h5YbOQflV8=; b=NwtnkByNqrlvvAlcBMiuS5MIGw yhjm478E5wo1eascd0acO4CAwFlfUoWg5k1hZ0fv5ppbT+RNMFnhvO6kgIcgbE/iaFmwjkp3yK/u6 Y4MEwhT9AgfyivShjp7+JSJ79dg6jLmK3X6pulwgwl+8TGgHgGfzilaqWHPtStx8yA4Q3gEVRjBPU M4oziAsT/a7M55yRZiImqvF7xC+Z6AGiUA2vsdWQHnr32ZOVF3gu3LME9i2a6Nf+XDUfTBe0t/tAc xf3rifcWnwTIZUMKHBtk2UWaC2NUZOl6MMsWx36m05YXZQQ/Y+LH4b5Ap24izIouQ4rE6/DhLw8U3 hj4PmrqA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.99.1 #2 (Red Hat Linux)) id 1whO8x-0000000GfzJ-3RFC; Wed, 08 Jul 2026 09:00:35 +0000 Received: from tor.source.kernel.org ([2600:3c04:e001:324:0:1991:8:25]) by bombadil.infradead.org with esmtps (Exim 4.99.1 #2 (Red Hat Linux)) id 1whO8t-0000000GfwL-3lvH for linux-arm-kernel@lists.infradead.org; Wed, 08 Jul 2026 09:00:32 +0000 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) by tor.source.kernel.org (Postfix) with ESMTP id 186416001A; Wed, 8 Jul 2026 09:00:31 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 394CD1F00A3A; Wed, 8 Jul 2026 09:00:30 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1783501230; bh=y1yMKaThBH4by4GQ13G90z2f3G5Qb2br9h5YbOQflV8=; h=From:Date:Subject:References:In-Reply-To:To:Cc; b=BXMIvPPs118em0CzQTi9Wx6iq4blEjTIlziU35Ka0qPEQqfd5GZ1tU1mTJiPHWNbv tpA9LxlildFpfJmjLhnGYc1rf76sUfnq4sMDx82wkHLXcdhB+A6FRN6MBpD82WB7DZ Qws8y1Uj0kJ+4mu+83UcWC4UBYLOBokUecP6zcXY9ooW2vom15s6UXaXn2rJgGM83/ I7rDgfxYvarVDtgH3Zw8jTWioLeau+nNnofHzI0jqWrcInZDxC4fki6NYg0JfpWWhn HeIGVWzavQRtAB5w0oO61v07PURGmdXdNWgHfyW31WTo/Dypcqo+juS2zaU9xzHlVE NV4oAsNcE1iWw== From: Sudeep Holla Date: Wed, 08 Jul 2026 10:00:02 +0100 Subject: [PATCH v4 06/16] firmware: arm_scmi: Reject out of range DT protocol IDs MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260708-scmi_core_fixes-v4-6-53142cd60b63@kernel.org> References: <20260708-scmi_core_fixes-v4-0-53142cd60b63@kernel.org> In-Reply-To: <20260708-scmi_core_fixes-v4-0-53142cd60b63@kernel.org> To: arm-scmi@vger.kernel.org, linux-arm-kernel@lists.infradead.org Cc: Cristian Marussi X-Mailer: b4 0.15.2 X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SCMI protocol IDs carried in message headers are limited by MSG_PROTOCOL_ID_MASK. The DT parsing paths noticed protocol IDs outside that range, but only logged an error and then kept processing the invalid value. That lets a malformed 32-bit DT reg value reach helpers which take a u8 protocol ID, where it can be truncated and/or treated as a different protocol. For channel setup, two different out-of-range values can also be used as distinct IDR keys while aliasing the generated SCMI protocol identity. Skip DT protocol nodes whose reg value does not fit the SCMI protocol ID field before setting up channels or creating protocol devices. Fixes: 05a2801d8b90 ("firmware: arm_scmi: Use dedicated devices to initialize channels") Reported-by: Sashiko Signed-off-by: Sudeep Holla --- drivers/firmware/arm_scmi/driver.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/firmware/arm_scmi/driver.c b/drivers/firmware/arm_scmi/driver.c index 3b0c8b6087e6..8c4a3036ae43 100644 --- a/drivers/firmware/arm_scmi/driver.c +++ b/drivers/firmware/arm_scmi/driver.c @@ -2873,9 +2873,11 @@ static int scmi_channels_setup(struct scmi_info *info) if (of_property_read_u32(child, "reg", &prot_id)) continue; - if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) + if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) { dev_err(info->dev, "Out of range protocol %d\n", prot_id); + continue; + } ret = scmi_txrx_setup(info, child, prot_id); if (ret) @@ -3339,8 +3341,10 @@ static int scmi_probe(struct platform_device *pdev) if (of_property_read_u32(child, "reg", &prot_id)) continue; - if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) + if (!FIELD_FIT(MSG_PROTOCOL_ID_MASK, prot_id)) { dev_err(dev, "Out of range protocol %d\n", prot_id); + continue; + } if (!scmi_is_protocol_implemented(handle, prot_id)) { dev_err(dev, "SCMI protocol %d not implemented\n", -- 2.43.0