From patchwork Fri Sep 4 10:06:31 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dario Binacchi X-Patchwork-Id: 4842 Return-Path: X-Original-To: linux-amarula@patchwork.amarulasolutions.com Delivered-To: linux-amarula@patchwork.amarulasolutions.com Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by ganimede.amarulasolutions.com (Postfix) with ESMTPS id 7554E3F182 for ; Fri, 4 Sep 2026 12:13:37 +0200 (CEST) Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-499c41f0c46sf677675e9.2 for ; Fri, 04 Sep 2026 03:13:37 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1788516817; cv=pass; d=google.com; s=arc-20260327; b=BKORN4awCU8ct8M91sX5hyVNyh1QdVGKOQj1NUxIk0d5VYfWBduUeCvoFt2G+EvPYN /XND3t6Pj5aAe9KALJUxOQugYMV3qDhSiccorxWGkFO+Sir2XBR4BzfvlgzgeASyYns7 gDPr1PpmkpD0IlVfJYnM1QmwxhKL+kKqDq2l9MLNV3Pdw/CowHX+ejtoGKeUk2vnawBi ViudzxvS8fWlY4e7izRoCQ+BqmwLsh983EzFPJGU8RbwlhBIIybHGjUpKg0I5F2nvjMi W8LWdsg0dWyE9zL4RtowewAIgTukQtDcvju1VE7Hfq3BRdea0szaJ1YeBQ43tNt5Y9HN Ut2A== 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=jhLYFQ4PlNM5lJPwkt4rwFcyOULsa5vSfE0luCF6vZA=; fh=9ARZeyOixJjfWClEZ/9X4SBMVAxHR0A/JDBmNldQjoM=; b=YKM2IZcIq3LT2HROFPn3MPpCav/eLoApQbWLbiRuG26DnEc0Hp4FATMRTjAu4atW8S XboWErWHj7Ostc7drSEp9KHETX8lN18170CLrtp1ZbLz1y5xw9yuQZUuC1BmEG9a2uR/ izESURwvuBqqDJXlTQXO4QduHEeXI9m18Ez/E80jSVZZw/CchYSJLFI6bMQAf2MLgWen X+N9l9mYRwaJQOLm1CWVBlykaG9QugC4+Vp5f7plZPXwUHyZuB0VLEB8mwbANbwfGNJv 8n14VuKZAjx0tIbPffOHpSgEOVNEeXUXJ4wU3VvohMjAgPZdCNDxOYksNK7jLcvwsrJw qa+g==; darn=patchwork.amarulasolutions.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=iOwbx40x; 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=1788516817; x=1789121617; 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=jhLYFQ4PlNM5lJPwkt4rwFcyOULsa5vSfE0luCF6vZA=; b=AqilhTYxq7x/KY8l9bHqhuSTpIHslqXwXC03Ir8EvcQi5Piy1LLbaIzjGeJvXrzoNK qLp4xYjYHYL1gNUFNLClKuNmStorXCUy8RfMYUfNlJVnd31ZP7/iHR4FS3toueID1NKz nzKg44Jmdl+7fZ1k8eGp7gCHJQdQRBzVIkS7Y= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1788516817; x=1789121617; 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=jhLYFQ4PlNM5lJPwkt4rwFcyOULsa5vSfE0luCF6vZA=; b=AEgiJ7fG5ZtysPUZySzuvY9non7k2w+smQ1sMvnY9FD0/zvJN3JaN6SWW/5MufRodp dkTHvNiEwNuV4kXRZTscesb1dShLH0rw0PXreKqDCfUC+ki2WTD1mRPmgroKNDCClku1 c+sPNMK5BVnzKd20A88CNOvZ0apNbnQhLekj0A3N1i+uUB5673/ZsshZpYoA5LgcTDoI SkGskyqVC+gEMDkXCQlVC9EP1ftYOGjoYQfECxPWeFZo+qGrHvY3JmO0DiZuX98EDsdq lk1TczGoGPbf6d/tPb4NEl+qktaIsrSULHOXVTnpl5tPtplEOYRwwD67RWV4B+w4mtXa ZWPQ== X-Forwarded-Encrypted: i=2; AKwUvBxACswJH+V5fLlhzpBzZQuqrx/h5k/wHXrUKWZZn1p0XjRWDEPmOUvgd3qnw7ffUUI5q1mj5971otPFyZO9@patchwork.amarulasolutions.com X-Gm-Message-State: AFuF++kbWxoHhVIbhu92xyBuVTEoP7hFZhFTNqWyNMNZEkD4PRJckXkV sDUQSXMX+TSwyjQXXYjYERpJO0/3lRCCiW7NlE/NbBlQfQeWzvmcV6Hgf4UJoEtVUqMfZg== X-Received: by 2002:a05:6000:240f:b0:485:82bf:8721 with SMTP id ffacd0b85a97d-485891c0dcdmr4076599f8f.0.1788516817068; Fri, 04 Sep 2026 03:13:37 -0700 (PDT) X-BeenThere: linux-amarula@amarulasolutions.com; h="ATskLdciB3EUdcJkk3y5q+WItdLjtUrg84nfuGSL6GP5GSlaCw==" Received: by 2002:a05:6000:4817:b0:482:dd19:9b01 with SMTP id ffacd0b85a97d-485864dec35ls913886f8f.1.-pod-prod-05-eu; Fri, 04 Sep 2026 03:13:35 -0700 (PDT) X-Forwarded-Encrypted: i=2; AKwUvBxbiNfFdwJXnsKl3892G5VG+MprWfFGHPtbIUC7KjIQX4EvQAI0VDYZw/oBOcAbFAJxVdwrDVtoc2zSh9B8@amarulasolutions.com X-Received: by 2002:a05:6000:26d0:b0:485:8a46:7056 with SMTP id ffacd0b85a97d-4858a4671a9mr3277228f8f.40.1788516814861; Fri, 04 Sep 2026 03:13:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1788516814; cv=none; d=google.com; s=arc-20260327; b=iz3qOHVzOS79M9R5Xo38wwHz+CEXmztNllnpH0qz1tYx9yjagjUPsaICj9pQ2iT56k nB9aLl2dgnnW6qUO5SdTF0FCdY4y5jAFrrkfmdMyxCjntZpFoCyGTY8msTwYCrZY9CcB oFLhM1AolAsySp+Vdms75jlWgp3Of0g+UYojChpwO/oE93+X18XyxzJk2O93Mhy3pN1R TZiIP6B6g4GjZmEtxT0l/T1DD8/Ug89M5HlenUSME2IlMWm6RHGgEdfsgVL7qSbfTlxL 8OtZ/fEnVZLdLGPPxQ+rzNCXbmE/KluAlT1FBvTRknOf5bLKPqGUZIsbpFc8KLXGg4Am BBMA== 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=U/iBVA9/Ii7qFgco17f5RCUwPjhgNhGPbu+zTwjLGmA=; fh=egCduNXO1WSG6T//k1DToPOmPIFh9y212HV8JmQm7A8=; b=Eb9aRv1wZBoIPdpHOw/pHemFnGiOSuStqSBaOfHaobkFnJkOp21UqeKj1jDphOMTMA lGu17XTHPS0Zs/lk5l4hpd41xGkS0Q4Mk9aIEwZQUNfwXOS/m4hRMpMwLjjP4gTOxUoj ZjQXrggAnovheNpZ6u7ZkgiAXmZSbQjt2jifv87mWc2jc5A4PTqfLuXnj0DYwEU+4Tp1 kmiQjQbMJHd4Kj5UJi0jhDjWb4x5lfIq2siKYeg3Ury/rJBA2YER3RW5KfAstWqxmfhZ J/DjzA+oASY/UmG4QHVQkeVWwJd3sIPOr/8HQP5TQJ0LdHdAjKoDkNEFgbttKSolv7UU XNzQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@amarulasolutions.com header.s=google header.b=iOwbx40x; 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-485885c9653sor415840f8f.20.2026.09.04.03.13.34 for (Google Transport Security); Fri, 04 Sep 2026 03:13:34 -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; AKwUvByDp8aPRJqNFzadKjVhqm3a2+/VKK9DjloiOCBkiHkdem4m6YvdZgmrv7q8jXBdiot7mXI+FU682FLO3cW0@amarulasolutions.com X-Gm-Gg: AYBFou3YpsfQ/w7Rtz25ZyIAlSZnYB/zE8fN/teIVM3pUnpguRMZtSBppau24yrBK1y BHDoGztow4hPR5k/CAo9nA8seZpXprZuKv/C/TK5CXmIg1NOjmgpld4OQt2kS5QvtkbXZQbbl39 GdtVxvJoMJzwufb4fbAB+TkehY5s0/frDMdvxXS24bStKGtpUh/xonQyAW5IRCUXLUKDYQ+wb9F WpN6EEfcVe1vo5CuvnL69egVsztuRqMwKP9K4cc3k36x4L8fggvSf2LbWuXdZ3IzRlt0F+2GVD7 WSrefzC3pav/SkSDw+AzKyCWv1LhTTmhQ4H2bhSYSQfDs9c9w1lfQod/6rt/6bIKE9UQpxChlUv y80lCFSNYqQ/jDBimUc5QuYtu4B6UKFrlf5bxkEzDEVhbsWW9BShfjf/aRrPMXATOri2P7nfsel l3P4Xc3/HXbJwRp8fDuc4DP4DeY+PoCYWMfLyhOtMCtigGimA8c6wVhy0e+avW/WsavM0U/NMpW 1+rLC2ejNVNpOEUmsWblsIj5LqwFGgWu67wVoUuUZUxuUxPLm01BizmK2/YCjGwHXeT9LXaAYOw bXUe0HBMGTGzs+xiWzt4vi/XCPhzrvbpAsJhxO1brV+rVw0HmWIQCBE= X-Received: by 2002:a05:6000:40c7:b0:484:3310:f394 with SMTP id ffacd0b85a97d-485872d2de3mr5945970f8f.23.1788516773023; Fri, 04 Sep 2026 03:12:53 -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-48588390e30sm5317990f8f.7.2026.09.04.03.12.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Sep 2026 03:12:52 -0700 (PDT) From: Dario Binacchi To: linux-kernel@vger.kernel.org Cc: michael@amarulasolutions.com, linux-amarula@amarulasolutions.com, Dario Binacchi , Sashiko , Peng Fan , Brian Masney , Jerome Brunet , Sebin Francis , Stephen Boyd , linux-clk@vger.kernel.org Subject: [PATCH v14 2/4] clk: validate spread spectrum configuration Date: Fri, 4 Sep 2026 12:06:31 +0200 Message-ID: <20260904101243.412006-3-dario.binacchi@amarulasolutions.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260904101243.412006-1-dario.binacchi@amarulasolutions.com> References: <20260904101243.412006-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=iOwbx40x; 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 Reviewed-by: Peng Fan Signed-off-by: Dario Binacchi --- Changes in v14: - Add Reviewed-by of 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