Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp340201ybx; Fri, 1 Nov 2019 04:27:03 -0700 (PDT) X-Google-Smtp-Source: APXvYqzIQPY1F/8qIwb1U4vhP8SRYbbVJWXU6GFwhqMFfNcKf5ex95gUg1Ja52wl+SCot2zM6rp1 X-Received: by 2002:aa7:d4d8:: with SMTP id t24mr1981168edr.40.1572607623552; Fri, 01 Nov 2019 04:27:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1572607623; cv=none; d=google.com; s=arc-20160816; b=M1mm1HY9b0iIRs+UCynofXXoOoYJR4+J1/f2TnN7lO5I1Kdkw7NGzx9g6qxlejCFA2 DLMjyGQi14vEMhKsfzuRYKdUy5Zpyxt/iJR14O6yU9jPCt+F9iwmKwQzXzxp8uVKxDFM TJPDyCqZH/XAgiiMDBjoIh9Nz8r0YSas+nWT/aGmT29ichZrG72D6Z2QCqe2fK30YJk2 5awpHhC16PJUm57ThT4F7dC6aXcpn8M8JIcY9WZfJDG5DVnG8e/qobD/gf2bOnYFQOIt 76hu1zMt0e/uMXN6Nu2eB88uqT4ktIX489B9dzqEXtKEt/ZGYxUw2H3yAIjSvy2MF7sX TUZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from; bh=BvU5Vg91iv4OGcJ1IrauFtCa+LTy85N7dR1d3tuheX8=; b=zkEvt9reTaNrgM3c5DFAQ2jBfcUg6b/GcRleJKsvVxkiQTOJ9h+2n9KiLor2PRsu+9 EbM5ztNOrbcUcrNttJgTD23ZKNaAHQkoLAmrBrHkyoCD8o06RL2RcV2VpA7jf/dTzNQd 2IUoPw1UKWIZD4IW8sV4LshkngipeKPj9yHZBS6DYdvTMRY+QRYCIUJGI1CWOz9UTh3/ Fq3liWgwLGVs68XwHAw/+kaBL2/ExpLAWBnvQ10bplDqi40U1/y8YEIxSiRTmaPzvw52 yv5MSX1GtHTowWBoPZN7fR+qdtz0xXksCTyi756ktn7zyjwHNSAX5uZcS37LQEJDfmxx 1aOw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id jz15si4866948ejb.94.2019.11.01.04.26.40; Fri, 01 Nov 2019 04:27:03 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728981AbfKAKAp (ORCPT + 99 others); Fri, 1 Nov 2019 06:00:45 -0400 Received: from youngberry.canonical.com ([91.189.89.112]:53147 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728092AbfKAKAo (ORCPT ); Fri, 1 Nov 2019 06:00:44 -0400 Received: from 1.general.cking.uk.vpn ([10.172.193.212] helo=localhost) by youngberry.canonical.com with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1iQTjP-0003cs-VH; Fri, 01 Nov 2019 10:00:36 +0000 From: Colin King To: Andy Gross , Amit Kucheria , Zhang Rui , Eduardo Valentin , Daniel Lezcano , Stephen Boyd , linux-arm-msm@vger.kernel.org, linux-pm@vger.kernel.org Cc: kernel-janitors@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH][next][V2] drivers: thermal: tsens: fix potential integer overflow on multiply Date: Fri, 1 Nov 2019 10:00:35 +0000 Message-Id: <20191101100035.25502-1-colin.king@canonical.com> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Colin Ian King Currently a multiply operation is being performed on two int values and the result is being assigned to a u64, presumably because the end result is expected to be probably larger than an int. However, because the multiply is an int multiply one can get overflow. Avoid the overflow by casting degc to a u64 to force a u64 multiply. Also use div_u64 for the divide as suggested by Daniel Lezcano. Addresses-Coverity: ("Unintentional integer overflow") Fixes: fbfe1a042cfd ("drivers: thermal: tsens: Add interrupt support") Signed-off-by: Colin Ian King --- V2: use div_u64 for the divide as suggested by Daniel Lezcano. --- drivers/thermal/qcom/tsens-common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/thermal/qcom/tsens-common.c b/drivers/thermal/qcom/tsens-common.c index 03bf1b8133ea..c6b551ec7323 100644 --- a/drivers/thermal/qcom/tsens-common.c +++ b/drivers/thermal/qcom/tsens-common.c @@ -92,7 +92,7 @@ void compute_intercept_slope(struct tsens_priv *priv, u32 *p1, static inline u32 degc_to_code(int degc, const struct tsens_sensor *s) { - u64 code = (degc * s->slope + s->offset) / SLOPE_FACTOR; + u64 code = div_u64(((u64)degc * s->slope + s->offset), SLOPE_FACTOR); pr_debug("%s: raw_code: 0x%llx, degc:%d\n", __func__, code, degc); return clamp_val(code, THRESHOLD_MIN_ADC_CODE, THRESHOLD_MAX_ADC_CODE); -- 2.20.1