From nobody Fri Dec 19 17:40:13 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 66DD7C83F01 for ; Wed, 30 Aug 2023 18:54:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244211AbjH3Sww (ORCPT ); Wed, 30 Aug 2023 14:52:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:51224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242461AbjH3IiO (ORCPT ); Wed, 30 Aug 2023 04:38:14 -0400 X-Greylist: delayed 586 seconds by postgrey-1.37 at lindbergh.monkeyblade.net; Wed, 30 Aug 2023 01:38:08 PDT Received: from mail.confident.ru (mail.confident.ru [85.114.29.218]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6AA941B7; Wed, 30 Aug 2023 01:38:08 -0700 (PDT) Received: from localhost (localhost [127.0.0.1]) by mail.confident.ru (Postfix) with ESMTP id 8399B3FC067D; Wed, 30 Aug 2023 11:28:19 +0300 (MSK) X-Virus-Scanned: amavisd-new at mail.confident.ru DKIM-Filter: OpenDKIM Filter v2.10.3 mail.confident.ru 475B03FC0A73 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=confident.ru; s=54152002-4729-11E9-BD92-62EA33CD6873; t=1693384099; bh=0aND6cMRox2YbjYV2xzlH/w1FyrsJAgkQ36rhVlOZeM=; h=From:To:Date:Message-Id; b=e1P1860VN55yzZ6M8slBYiV8aDbB7lZJUAOnc7DLcQrKnUht3yA7CEJOcB9cLDfZd Uf4jWbWKYqh8HIDk9tSnJGTVHA9cd6KUfcxCkhYjWXFO0VsNefyvaEuNY92AKtmf0o kgmqSZqBbSpp9WehvMMIUxWsbjRQny0EeSOKn8P2udOFTm9cHCBFKVahWpHU0fNkVH 01R+QE/ogA4SchhLZbWqXlNoMy26HwQ0lLU0AqebV57zaUs91dgH0/MSw/FYv+teuc N0vi+GKxuaF+7GLGvs0oT3xBjoIE9dDp6LypKdXE/I9lrF7oKpCH4NMpszNmHzb8xA MZHquW1TZwNHQ== From: Rand Deeb To: Michael Buesch , linux-wireless@vger.kernel.org, linux-kernel@vger.kernel.org Cc: lvc-project@linuxtesting.org, voskresenski.stanislav@confident.ru, Rand Deeb Subject: [PATCH] ssb-main: Fix division by zero in ssb_calc_clock_rate() Date: Wed, 30 Aug 2023 11:27:59 +0300 Message-Id: <20230830082759.23336-1-deeb.rand@confident.ru> Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" In ssb_calc_clock_rate(), the value of m1 may be zero because it is initialized using clkfactor_f6_resolv(). This function could return zero, so there is a possibility of dividing by zero, we fixed it by checking the values before dividing. Found by Linux Verification Center (linuxtesting.org) with SVACE. Signed-off-by: Rand Deeb --- drivers/ssb/main.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/drivers/ssb/main.c b/drivers/ssb/main.c index 0a26984acb2c..e0776a16d04d 100644 --- a/drivers/ssb/main.c +++ b/drivers/ssb/main.c @@ -903,13 +903,21 @@ u32 ssb_calc_clock_rate(u32 plltype, u32 n, u32 m) case SSB_CHIPCO_CLK_MC_BYPASS: return clock; case SSB_CHIPCO_CLK_MC_M1: - return (clock / m1); + if (m1 !=3D 0) + return (clock / m1); + break; case SSB_CHIPCO_CLK_MC_M1M2: - return (clock / (m1 * m2)); + if ((m1 * m2) !=3D 0) + return (clock / (m1 * m2)); + break; case SSB_CHIPCO_CLK_MC_M1M2M3: - return (clock / (m1 * m2 * m3)); + if ((m1 * m2 * m3) !=3D 0) + return (clock / (m1 * m2 * m3)); + break; case SSB_CHIPCO_CLK_MC_M1M3: - return (clock / (m1 * m3)); + if ((m1 * m3) !=3D 0) + return (clock / (m1 * m3)); + break; } return 0; case SSB_PLLTYPE_2: --=20 2.34.1