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 X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D2BFC433F5 for ; Sat, 11 Sep 2021 17:20:28 +0000 (UTC) Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 64EDF60FE6 for ; Sat, 11 Sep 2021 17:20:27 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 64EDF60FE6 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.denx.de Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id AF6318381F; Sat, 11 Sep 2021 19:20:23 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="GpaxnzsS"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 2940B83837; Sat, 11 Sep 2021 19:20:19 +0200 (CEST) Received: from mail-qv1-xf33.google.com (mail-qv1-xf33.google.com [IPv6:2607:f8b0:4864:20::f33]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id E28088381F for ; Sat, 11 Sep 2021 19:20:14 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=seanga2@gmail.com Received: by mail-qv1-xf33.google.com with SMTP id s16so3393448qvt.13 for ; Sat, 11 Sep 2021 10:20:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=T4TmOnV0K1K9iwaEWDu3vQwDCbNbijYHv5aaH/3PvdI=; b=GpaxnzsSwxMahaQb1O6hM43LrnvyQZLqFj9AbuMJungdaDNtcTeM/S1Ys0rH5v72px TfvR0Sy5bDNfFh045XUM0rNpbY0zYv0v4DZXI+ldcCKn6+DvpYUFkWLs3AypjcWgrlGL 7HauhoYy59dZ3ALL/NjIy/1b8APwsRH8DG97vkfHmoJED/xhCEKSRQLns1/at44ht+Ge gee3+jjM6f+Ezhjd4erm0RVuV6fcAkDpqyErnkbbNrhg6zWBit1q2IXNZvEnmGPZWDg+ rSfFEwHKMJLgQVi5ystgNlFKLuZUtUMHM16KdTLk8aiagPWj+dkT3pSlVSMBCVT5uZno /07w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=T4TmOnV0K1K9iwaEWDu3vQwDCbNbijYHv5aaH/3PvdI=; b=v/WU5pmTL2jDRdl7TS1tsUnCHfHyrw0N01xLzLByG8rHGEku2clPP1pqbHwBKrrEt4 67KlTsEzP1P71VE82/JXmLcME8xHnO9yXzU5vQ06UCdPPGU4WDBfdOVYJnmyWtTjNs7P kCqh1N6w4OBkJ20ckT1AJoPqXnB5r3F/VKLbdImiuScmwmBo6IttN0HYV53O/2J1tck7 jAkzjqMK3SI8AbDg/zLko8j07YrW/ds2kbrIv/JndN+/ulfCOQDtA/ckCiNBcZLDQven ELtfoo7si1guQ6lb9xM0Mok/aLBanrXzaI/m01YMdsFiByRXSpRk91V6q5v07STvUHm8 cw9w== X-Gm-Message-State: AOAM530gTduZ412JIuo1qYP7NqsguGwf1Ehe2SShQt2glzM1MTyfgzSA WwsEp8R0DOkkG0lzWXPs20HFNX8seJQ= X-Google-Smtp-Source: ABdhPJwfzh2DrhtrjgytrTDgglb8wI3ks8CYA33pfCYFShe/5uL7xblhGKyTQLR+cqTLCTUHYbYTEQ== X-Received: by 2002:a05:6214:3f1:: with SMTP id cf17mr2840911qvb.57.1631380813532; Sat, 11 Sep 2021 10:20:13 -0700 (PDT) Received: from godwin.fios-router.home (pool-108-45-127-224.washdc.fios.verizon.net. [108.45.127.224]) by smtp.gmail.com with ESMTPSA id d12sm1295669qtq.61.2021.09.11.10.20.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 11 Sep 2021 10:20:12 -0700 (PDT) From: Sean Anderson To: u-boot@lists.denx.de, Leo Liang Cc: Bin Meng , Damien Le Moal , Lukasz Majewski , Sean Anderson , Coverity Scan Subject: [PATCH v2 1/4] clk: k210: Fix checking if ulongs are less than 0 Date: Sat, 11 Sep 2021 13:20:00 -0400 Message-Id: <20210911172003.899301-1-seanga2@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.2 at phobos.denx.de X-Virus-Status: Clean The PLL functions take ulong arguments for rate, but still check if that rate is negative (which is never true). The correct way to handle this is to use IS_ERR_VALUE (like is already done in k210_clk_set_rate). While we're at it, we can move the error checking up into the caller of the pll set/get rate functions. This also protects our other calculations from using bogus values for rate. Fixes: 609bd60b94 ("clk: k210: Rewrite to remove CCF") Reported-by: Coverity Scan Signed-off-by: Sean Anderson --- Changes in v2: - Reworked patch to use IS_ERR_VALUE instead of changing arguments to long drivers/clk/clk_kendryte.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/drivers/clk/clk_kendryte.c b/drivers/clk/clk_kendryte.c index 3148756968..2caa21aec9 100644 --- a/drivers/clk/clk_kendryte.c +++ b/drivers/clk/clk_kendryte.c @@ -849,9 +849,6 @@ static ulong k210_pll_set_rate(struct k210_clk_priv *priv, int id, ulong rate, u32 reg; ulong calc_rate; - if (rate_in < 0) - return rate_in; - err = k210_pll_calc_config(rate, rate_in, &config); if (err) return err; @@ -895,7 +892,7 @@ static ulong k210_pll_get_rate(struct k210_clk_priv *priv, int id, u64 r, f, od; u32 reg = readl(priv->base + k210_plls[id].off); - if (rate_in < 0 || (reg & K210_PLL_BYPASS)) + if (reg & K210_PLL_BYPASS) return rate_in; if (!(reg & K210_PLL_PWRD)) @@ -1029,6 +1026,8 @@ static ulong do_k210_clk_get_rate(struct k210_clk_priv *priv, int id) parent = k210_clk_get_parent(priv, id); parent_rate = do_k210_clk_get_rate(priv, parent); + if (IS_ERR_VALUE(parent_rate)) + return parent_rate; if (k210_clks[id].flags & K210_CLKF_PLL) return k210_pll_get_rate(priv, k210_clks[id].pll, parent_rate); @@ -1099,6 +1098,8 @@ static ulong k210_clk_set_rate(struct clk *clk, unsigned long rate) parent = k210_clk_get_parent(priv, clk->id); rate_in = do_k210_clk_get_rate(priv, parent); + if (IS_ERR_VALUE(rate_in)) + return rate_in; log_debug("id=%ld rate=%lu rate_in=%lu\n", clk->id, rate, rate_in); -- 2.33.0