From patchwork Thu Sep 3 15:32:15 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4836 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 5502D3F0E6 for ; Thu, 3 Sep 2026 17:39:00 +0200 (CEST) Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-49b7c1dc61esf23756985e9.3 for ; Thu, 03 Sep 2026 08:39:00 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1788449940; cv=pass; d=google.com; s=arc-20260327; b=VXljeLaFfcQI8AA4r5l+uu+0wxzgJss/o5i/pPPjd2bYaOHicsPJr73uVNKjKtRjvg scGM52w9otQkrRGiKhv7JSMRhogM+2RND4Sfh/htud0w00PjrMwMSRdlCrVZhUmC6aQU JrJpdtR4gZMxkD4FWULA6kf94pBbXHieBux4o1h77dZEncCiAgznbD2LzqcOnu7i1zkM jnKjKndzeajXNN5PcD17dJQw3XyKHyAyF2B0LPtnEsBfnl3pFs+MkQxUFD/IgchQ5Syd ZwJ+7IKVLxwOlmfzVj5UGC4PNK96rnSEBeKg01qAIGNNjuzUahL/G90hbXDjGV+SYNs+ SjtQ== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=p5qSQsPBLLFODrAy6ZtqVyxV8UOB5as2nkUOwBUu+44=; fh=LYs/sQNQGMaRVXI8iTYb4pvRUm602nKYLzkKQfXnGXs=; b=jat0aIm54gBQSZOut5EGihcpeCKzueQIh4Wmo5FCcvVxVNpKKKJ/07+f6GKfoWL9hL IpwTl694Svhd63iWu1XcO0UslAIJue9ktONGZkS+SZkfHzi3uuc2x/wIGi/Syx9uPxCG ln6dbvtUBgqueQQ0aAI9aD5A9PX1aScJqCAK3F7mb95GeXGOEQdJ+wuv0torh1bxvkcL AXbIRo39KPS0La8XB+iRGbqgv8/QpR6ZGm5v5oyOKtiozF8jzy5FZxLxsAkmMsTqzo6N TwpfH+PMFksb8xhNM44UYuoPYdZU6dm2vzmoHaNN307llmVN3aEfPtySFmezHNg2yhgd 3U/g==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=AVbjKfz6; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amarulasolutions.com; s=google; t=1788449940; x=1789054740; darn=patchwork.amarulasolutions.com; h=list-unsubscribe:list-archive:list-help:list-post:list-id :mailing-list:precedence:content-type :x-original-authentication-results:x-original-sender:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from:from:to :cc:subject:date:message-id:reply-to:content-type; bh=p5qSQsPBLLFODrAy6ZtqVyxV8UOB5as2nkUOwBUu+44=; b=LohJAw0bw0PUCtT3FiTuauLPstPfDlkj8cx28VsbryOY13Fqchrp/NoAObxqhrWOR/ n7h+aK7WbtRWVm3ktn4an/8WGNKwEAd0z8ydxfW02mVqn4Zo8xAo3FYjCwdohx600iEd CDU90HMkqI9zY7S/sWv0ja7af4ARurnofhc6I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788449940; x=1789054740; h=list-unsubscribe:list-archive:list-help:list-post :x-spam-checked-in-group:list-id:mailing-list:precedence :content-type:x-original-authentication-results:x-original-sender :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from:x-gm-gg:x-beenthere:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=p5qSQsPBLLFODrAy6ZtqVyxV8UOB5as2nkUOwBUu+44=; b=GiSTx0vivIU53uNy2Zej3IcFP1VauBV6wNnh9ug1ox61s3rmSekWDLMQkEG+PnOvym 9kGNIVqD0cjFalQ7e+MQHIqGMaw0CFl4FqrRuBbKhaBx73XoAMns711+J67NhnL8w2lD HnMOu3B9qSHceCxYP9Enb//WLyXofoHRW8WhFgRwInfrXCOcdVOc+aQywWidZh9KJ7xr r8KSLg+eJWpMjii/09CxJCCPO0SXr3xZzPsG1r7coKBzwcmdJ/dgMs1zzdYGyce/piSv 6x5uWGxt374fmf+kEhNfTIrnubKNlmLKupmeRBpMWO6RZJThUm4j922r2wcIVXUPR/6/ IFeg== X-Forwarded-Encrypted: i=2; AKwUvBy3twS0/zG96eZlrpiUmVAUIuCNu1QWBAyfVWwBpR/+UrTb8eugK/n8lQP4LBFSEi03WG7MMMaoICAwwClO@patchwork.amarulasolutions.com X-Gm-Message-State: AFuF++mvOoffaaDOcjpMQfL75NidefeT6btJ5MqxobVFgrTWWKoQXZxB e3A53++vGrdstzY2AcZCg/mLghEjbbsf65rWHlztkA83pHE5+jamoiUNmow4xXFxwV4Inw== X-Received: by 2002:a05:600c:5489:b0:499:4e47:eaf2 with SMTP id 5b1f17b1804b1-49ce58092a6mr210606505e9.6.1788449940034; Thu, 03 Sep 2026 08:39:00 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="ATskLddI9rW1ty39bsg5VifYH7/vMiIRPZCY5HJFO95Br0XgSA==" Received: by 2002:a05:600c:1c09:b0:49b:91c2:4f05 with SMTP id 5b1f17b1804b1-49cf68794bdls145615e9.1.-pod-prod-03-eu; Thu, 03 Sep 2026 08:38:58 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBzs0xyvmv+CTWJQ3k0k4ed8GUsoETbITkrQvGbeDT4n/yfN/KVUjYOTNebbnAVqwuISfsj2CeExE0yj43fd@amarulasolutions.com X-Received: by 2002:a05:600c:a318:b0:49c:f516:1cd0 with SMTP id 5b1f17b1804b1-49cf5161f4emr50413305e9.10.1788449938633; Thu, 03 Sep 2026 08:38:58 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788449938; cv=none; d=google.com; s=arc-20260327; b=UnsfowbZP8A1GMVqBQjoUhkUBJnw6x46lKcIuMtGlsiR4g/d3daByfgTOD3RRv8wsV l9VCqgVKTPuXkrKA4uvX3Lxw3CNrpNNH01OVgocU0svaw+93ladrhepDntf1H8zfeC3i /lTHCxmtNJHWGzlsYEt2IByoKq0PNigRB8WoZf+s+n23MEs5WIyt2Ejiry+qUgSeHs3B 3+V0H1+0NdKP7D7qwa9TyeuOltONnBJthTavDyT5PbGtHjcJt+I0xrLsId5TomHHrpPF tDHHpNP9GKVVO09TziksLQu5ZA2oR70lXX0HIF3HIIXozZlA1lD/c+iDbzOXgJuklHBW aLkQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature; bh=waRfo/eMT+qYYnkf6SXoDP5wBnkJd2wqce5jm4IDuSY=; fh=YsyBVP1PhCE1lD9OEhpKeERMbK4rhPqOKuev2hEWX0Y=; b=SPZxA7LjQyGiivd9Ldt0PstiIaO3Rc1HG6YWWEZKlb7NuCEWcydcv9tiu0IWP8HeKV KScMqp9zNKoMPpKYLl4C5XmsoNLdoRDwopJ1gKMX1KkcqExLlQ4pyQxPsfqnJ3WehA2d p5FxLMPESSjuvP8XhZCvBevFxA2B9WPc0d5DuIREK4SiOh0SlS8cEmX8pxgQIxFZF4f6 RZtolEkYB3uqiSfIELqxRkd/gY1vMfbGb+BlR1FQEab+/hxbYd7Fo8VgO0vqcpU2fk29 A+sHRsZwDLhvkuzE8Wd3lKeL3+WfJgm6nlnF6v0l+cRlIi4FRVOVYG47DSHj4JkIzPp0 Nw8Q==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=AVbjKfz6; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Received: from mail-sor-f41.google.com (mail-sor-f41.google.com. [209.85.220.41]) by mx.google.com with SMTPS id ffacd0b85a97d-48448e7ffb2sor1065462f8f.6.2026.09.03.08.38.58 for (Google Transport Security); Thu, 03 Sep 2026 08:38:58 -0700 (PDT) Received-SPF: pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) client-ip=209.85.220.41; X-Forwarded-Encrypted: i=1; AKwUvBymHe2LrNrB0DzCHDyPIyMgxsTgdcsrok9bb2AQI1/m0UbZMyajH4LVHcrgCGkPvO2rEw/Oho+JgAGGw5TT@amarulasolutions.com X-Gm-Gg: AYBFou2LL2N6QEoY7MaZ0Vdn9GCYG7JMdIzrGsqURn6N1eDmZ0P2UTuMaiCry+q0Qmz u+tGO5YpBKuXAquGSnoWaN9WNaWpWs1UnA9MfnmrBQAUpK8ollpUEdnA8rglgrwgt66mtCFbkaB Yqsx1pdVIMMF12DBfZZTw5aiwN07q7iiE3I4DlvdR52P8Kkz0hLQLrxtaBIPvKM98CAZTxNTKE1 IOjjfjRYMECX9ykFYruZ5V/iyKAYAYQQVE2A4FptE8S/hDyIsx9Es60k5T0F968EsRImrkcI1Yn S/r7sdwlmw6XUQl3XTTH1Dyah/gWWGmA1zFNfJONQerj7wVUzlcuOxiw3RGThLxQkUkwaDTSngw X6i/g3MCcQnwlVLCZnVBoGpsxu9zhlFkekI7Z5fRgA8DD6KGNCaViwbwlue7HX/1Z/9H2gm2h+n 2nrpXkuvl6gwWopAaKS1W6jhUz19g7SgzTJBcH4SosIdQ+acwb+UP0H96S632hRc+Tf/E3JvnPi 2k6UzVmED/Pu+2fTimd9PXRIeyMuZu3Om423RJVa2IUVmoqKWtgr/uZh/drJ8pNOEsQQoyeOAKk KZPylQT+NxXcpAZCrRMkA76/HWtJju3jg42R8N/yuiipFUmon7y6MCujT550paPppS4= X-Received: by 2002:a05:6000:268a:b0:481:5b58:c589 with SMTP id ffacd0b85a97d-48488f0e30emr24641045f8f.10.1788449938221; Thu, 03 Sep 2026 08:38:58 -0700 (PDT) Received: from dario-ThinkPad-P14s-Gen-5.amarulasolutions.com (host-95-245-93-90.retail.telecomitalia.it. [95.245.93.90]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-48448e72df2sm15366301f8f.1.2026.09.03.08.38.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 03 Sep 2026 08:38:56 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Sashiko , Brian Masney , Jerome Brunet , Peng Fan , Sebin Francis , Stephen Boyd , linux-clk@vger.kernel.org Subject: [PATCH v13 3/4] clk: validate spread spectrum configuration Date: Thu, 3 Sep 2026 17:32:15 +0200 Message-ID: <20260903153836.373267-4-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260903153836.373267-1-dario.binacchi@amarulasolutions.com> References: <20260903153836.373267-1-dario.binacchi@amarulasolutions.com> MIME-Version: 1.0 X-Original-Sender: dario.binacchi@amarulasolutions.com X-Original-Authentication-Results: mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=AVbjKfz6; spf=pass (google.com: domain of dario.binacchi@amarulasolutions.com designates 209.85.220.41 as permitted sender) smtp.mailfrom=dario.binacchi@amarulasolutions.com; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=amarulasolutions.com; dara=neutral header.i=@amarulasolutions.com Content-Type: text/plain; charset="UTF-8" Precedence: list Mailing-list: list linux-amarula@amarulasolutions.com; contact linux-amarula+owners@amarulasolutions.com List-ID: X-Spam-Checked-In-Group: linux-amarula@amarulasolutions.com X-Google-Group-Id: 476853432473 List-Post: , List-Help: , List-Archive: List-Unsubscribe: , The spread spectrum configuration is passed to the provider's set_spread_spectrum() callback without any validation, as clk-conf.c only skips all-zero triplets from "assigned-clock-sscs". An invalid device tree can hand providers a zero modulation frequency or a spread ratio above 100%, and each provider would have to add the same checks to protect e.g. divisions in its rate computations. The KUnit test data for assigned-clock-sscs uses spread values of 30000 and 40000 permyriad (300% and 400%), which the new check rejects, as reported by Sashiko, so fix them to 300 and 400 (3% and 4%). Also use a realistic 6% value for the initial settings of the skip tests, for consistency. Fixes: c86814e70390 ("clk: Introduce clk_hw_set_spread_spectrum") Reported-by: Sashiko Closes: https://lore.kernel.org/r/20260901155657.6A5981F00A3A@smtp.kernel.org Signed-off-by: Dario Binacchi Reviewed-by: Peng Fan --- Changes in v13: - Fix the KUnit test data to realistic spread values. - Add the Reported-by/Closes tag for Sashiko. drivers/clk/clk.c | 14 ++++++++++++++ drivers/clk/clk_test.c | 12 ++++++------ drivers/clk/kunit_clk_assigned_rates.h | 4 ++-- 3 files changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c index fef87167a60b..208caf60eeb5 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c @@ -2851,6 +2851,20 @@ int clk_hw_set_spread_spectrum(struct clk_hw *hw, const struct clk_spread_spectr if (!hw) return 0; + switch (ss_conf->method) { + case CLK_SPREAD_NO: + break; + case CLK_SPREAD_CENTER: + case CLK_SPREAD_UP: + case CLK_SPREAD_DOWN: + if (!ss_conf->modfreq_hz || !ss_conf->spread_bp || + ss_conf->spread_bp > 10000) + return -EINVAL; + break; + default: + return -EINVAL; + } + core = hw->core; clk_prepare_lock(); diff --git a/drivers/clk/clk_test.c b/drivers/clk/clk_test.c index 1c5c8b7c1f3c..21e62d68f87f 100644 --- a/drivers/clk/clk_test.c +++ b/drivers/clk/clk_test.c @@ -3526,7 +3526,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "provider missing assigned-clocks", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_without), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, }, { /* @@ -3535,7 +3535,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "consumer missing assigned-clocks", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_without_consumer), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, .consumer_test = true, }, { @@ -3545,7 +3545,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "provider assigned-clock-sscs of zero", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_zero), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, }, { /* @@ -3554,7 +3554,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "consumer assigned-clock-sscs of zero", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_zero_consumer), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, .consumer_test = true, }, { @@ -3564,7 +3564,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "provider assigned-clocks null phandle", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_null), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, }, { /* @@ -3573,7 +3573,7 @@ static const struct clk_assigned_rates_test_param clk_assigned_sscs_skips_test_p */ .desc = "consumer assigned-clocks null phandle", TEST_PARAM_OVERLAY(kunit_clk_assigned_sscs_null_consumer), - .sscs = {50000, 60000, 3}, + .sscs = {50000, 600, 3}, .consumer_test = true, }, }; diff --git a/drivers/clk/kunit_clk_assigned_rates.h b/drivers/clk/kunit_clk_assigned_rates.h index d7ae5ec2d25b..c5d9f004ee81 100644 --- a/drivers/clk/kunit_clk_assigned_rates.h +++ b/drivers/clk/kunit_clk_assigned_rates.h @@ -9,10 +9,10 @@ #define ASSIGNED_RATES_1_RATE 9700000 #define ASSIGNED_SSCS_0_MODFREQ 10000 -#define ASSIGNED_SSCS_0_SPREAD 30000 +#define ASSIGNED_SSCS_0_SPREAD 300 #define ASSIGNED_SSCS_0_METHOD CLK_SSC_CENTER_SPREAD #define ASSIGNED_SSCS_1_MODFREQ 20000 -#define ASSIGNED_SSCS_1_SPREAD 40000 +#define ASSIGNED_SSCS_1_SPREAD 400 #define ASSIGNED_SSCS_1_METHOD CLK_SSC_UP_SPREAD #endif