Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp3564229ybx; Sun, 3 Nov 2019 22:17:23 -0800 (PST) X-Google-Smtp-Source: APXvYqzEuFBcIQx9jjS5VLhtO6DqHVq4FeuqnIii9a2ncymU6oBrx4uWv/7SJ6JLncCzvP/XI3Gd X-Received: by 2002:a05:6402:488:: with SMTP id k8mr27309270edv.293.1572848243810; Sun, 03 Nov 2019 22:17:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1572848243; cv=none; d=google.com; s=arc-20160816; b=EMMRrQhwdv1CHLxz4LY7N8wvXzlgnafuEUlWbG9nhVKZnPP7O9E39AjXZL0HESon4M /W2MCoZ5QSQ5AF5/T30/kWrRb7uNHSA0AwLBDpj1fcNfHEEanVIOZtbOoVx17+bTTtBQ +cN9vXs8jQ/S+Sbz4GXKrDryAYsF7nGgs5FI0nqmH/jKaZENl2YBhj5Us5pffH5x3X9q jXB4j9DNblWXRsDlf4+c3PXg479Nw3hAUZhpHe18PRvmisdimyoFFmPBkQUmP1BBoehl 1+C+wRWzkfJrIXhXTXl55L0K2B/vNvFP45QK4SXeu+UjHavXYnCavJekxFCzau6xbp/6 tH4w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=9yIKhMPMljW03rsGEF8LljWFKxCpgqs32gHznOzRrkU=; b=pOlsC/Xeayju2YZ6F3NCMNJ0d7uR8YkHEYSx/7R2B/Qc7IamZR5w5qVcBfBOagL6yy vo3M47ns8T8kqVmX98lE+jHLDSvhe7x9J24ku1wc88syLMbV1MH5H9GbvrCzQHFZHnzd nNbWFfM3+2/GZ1/cwd1Dqdxl7PORHuzm+NqdULYEF0H9obVSnEDub2o0MgoR6w06gq0F GRs0BDVEwSNNSr+rRmGfUWAMKFJ+Lfe9FLisNba3uKG07hUpI7IUXAAuJCrxBBXSMmOE b1SepER3AVj1us4FJxjQU1SJyXpIU70mbemv7EWen0h4lOxUSUOH5T8lwnyvBfRG52lp iEwQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=a5QoL30H; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m7si7211889eda.192.2019.11.03.22.16.59; Sun, 03 Nov 2019 22:17:23 -0800 (PST) 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; dkim=pass header.i=@linaro.org header.s=google header.b=a5QoL30H; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728168AbfKDGPf (ORCPT + 99 others); Mon, 4 Nov 2019 01:15:35 -0500 Received: from mail-ua1-f66.google.com ([209.85.222.66]:43621 "EHLO mail-ua1-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728114AbfKDGPf (ORCPT ); Mon, 4 Nov 2019 01:15:35 -0500 Received: by mail-ua1-f66.google.com with SMTP id k11so1941087ual.10 for ; Sun, 03 Nov 2019 22:15:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=9yIKhMPMljW03rsGEF8LljWFKxCpgqs32gHznOzRrkU=; b=a5QoL30HvSEZynCl/a1K6RSYVfhOX/6DM8wEnJNPYl1VWwe6nSWllO8JV7myjdbRQh t62rimg+Byea+5mVZX5GD6S/F9W/Y2Or8fhRGZm3AlG2qnfj8NCUmImGAQ7DMv8osiQw EmdxwKKoChB0+/iRdGQJhWzt4ZWTiSTiswywGX8X5pIxsOf+Kib6d6vghyZxugVK8558 XKeFOz7xJH9hBzDGiPeaZOuwxfKO6EEOtuv9J044cs+U74fF7fLqm8DP0Hmo5Hnnb7Ei r5bW4eXGuf2lmI7ZBPTTOT2pNPzzPpxL4uw1GHGjA11VzU4JsmwCPfe6MI1tUEYNFcj2 vJAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=9yIKhMPMljW03rsGEF8LljWFKxCpgqs32gHznOzRrkU=; b=Wlqn9UVbqAPOBMfUd0BzKaDcQF+CUghkPavM+VT93sGSLCLl7rcF2vg2NjGdLaF23W iigE+50dBwfHgyGAvbhi8kX4zxcmsktqQkGtFkDGcEpERjfSEcHExM0ufN+33zHcwLqe e5SZ0953EplUh/Fs56Q9xLgYwQ1XydQ6W6SObYXkBgl7v794CrDwv07NlnX15Xp6+CaV GAJWNT+PZw7YNZlapsk5Hg2Y4rAQRqqLSY/qi+EShVJstj11jCX4wt7dm/nJaVpH0glc GvHOmJQ7arymlIJrLRkcRNFq9BD4qUPb4GuoNaPqsN0DOKEIuHlKWJQROHTSyKSpui+N GRdQ== X-Gm-Message-State: APjAAAW5I9TuB6E5KWj39VOVZao93V3apmbWxAD2POmL/ICt2yX5tZP6 chAHkBbxS1J/Mz/MI955OUy0Hhnd4bD+E8k/dQR2gQ== X-Received: by 2002:ab0:1405:: with SMTP id b5mr11166275uae.94.1572848134047; Sun, 03 Nov 2019 22:15:34 -0800 (PST) MIME-Version: 1.0 References: <20191101100035.25502-1-colin.king@canonical.com> In-Reply-To: <20191101100035.25502-1-colin.king@canonical.com> From: Amit Kucheria Date: Mon, 4 Nov 2019 11:45:22 +0530 Message-ID: Subject: Re: [PATCH][next][V2] drivers: thermal: tsens: fix potential integer overflow on multiply To: Colin King Cc: Andy Gross , Zhang Rui , Eduardo Valentin , Daniel Lezcano , Stephen Boyd , linux-arm-msm , Linux PM list , kernel-janitors@vger.kernel.org, LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Nov 1, 2019 at 3:30 PM Colin King wrote: > > 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 Reviewed-by: Amit Kucheria > --- > > 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 >