Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp5568237pxb; Mon, 14 Feb 2022 02:10:42 -0800 (PST) X-Google-Smtp-Source: ABdhPJwbcX5S9Y7tfINCztEdybthyzouWY0xkXh67oSHpCe871WgKuFT8t7Bhxe95+po/lE0i3Pr X-Received: by 2002:a17:902:ced1:: with SMTP id d17mr13398824plg.42.1644833442076; Mon, 14 Feb 2022 02:10:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644833442; cv=none; d=google.com; s=arc-20160816; b=REjMJ+0keHqMlcHFrvCWRZEJFxoAKVBoSZMCfQ2fs0fYaZNWZ06TfYMcs+MArrT5zb DZm95UNSjfOkwBgWBnEo/+u28flxRiB2AcB58lkprplGzcsmFpEG0Ro5Ssmjsgj8TkDK O0lmhOMZiQhVcx1caa8mlMei5xS7uK38ShVRmJuQCwgxH2K2YoSwGYTe2X5i7w0WBEeI NocC0bvePauewBRCE0SMXcuWVrkr+Mmn88X8jKLVpEY1dPGFBoYBoP4CUtDc1Wk2D1ao DHaBZUsjLEAEILwFC1rUg143SIZexXc4PwqYtnKBS4xQND938/jaSdDEM+3UbbB4/Xfh 4R/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id; bh=bpi6G6e2Ay9uP37hM/eLxkNRf4FIH6WhH4mUnFfq4UU=; b=kx78y0PTcmKMoCR01SKxGPGZbpJpb9YYYSVeeGDNw5lw3Mxj4/KRG7WBelKntnyn1a WA/TVUuuiPf9VNasALedl3YAsmV/pDlNF0IDYGjE0Ol/bCJ8eSrTHCiphmJA8bZgxd8m cazSxH7m4ixShRZFVexLxXXF5cksX2UFTqGFesi7GPbfTH5jmGA4B21HKNv2npBTcqra r4/O6vpMquyO2niaNbIMOYvAKuIcc8TEXhQpBZzynCq/fKtzn+FqPLN8Vhbrnsa/YCQl L6xPuqSBEIWaZmVjqgmRmQazOBXFWPmXlENl9J9ccOHQqiWBobOH/vdTk8K2936xptLr jw7w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id d128si29129726pgc.347.2022.02.14.02.10.28; Mon, 14 Feb 2022 02:10:42 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237894AbiBMSyL (ORCPT + 99 others); Sun, 13 Feb 2022 13:54:11 -0500 Received: from mxb-00190b01.gslb.pphosted.com ([23.128.96.19]:54114 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237882AbiBMSyJ (ORCPT ); Sun, 13 Feb 2022 13:54:09 -0500 Received: from smtp.smtpout.orange.fr (smtp08.smtpout.orange.fr [80.12.242.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7CD4F580D9 for ; Sun, 13 Feb 2022 10:54:03 -0800 (PST) Received: from [192.168.1.18] ([90.126.236.122]) by smtp.orange.fr with ESMTPA id JK0Xndg0HuvBOJK0XnOPod; Sun, 13 Feb 2022 19:54:02 +0100 X-ME-Helo: [192.168.1.18] X-ME-Auth: YWZlNiIxYWMyZDliZWIzOTcwYTEyYzlhMmU3ZiQ1M2U2MzfzZDfyZTMxZTBkMTYyNDBjNDJlZmQ3ZQ== X-ME-Date: Sun, 13 Feb 2022 19:54:02 +0100 X-ME-IP: 90.126.236.122 Message-ID: <29e74800-1c3f-e043-97e6-d83f7a53fafb@wanadoo.fr> Date: Sun, 13 Feb 2022 19:54:01 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH] iio: use div64_u64() instead of do_div() Content-Language: fr To: Jonathan Cameron , Qing Wang Cc: Jyoti Bhayana , Lars-Peter Clausen , linux-iio@vger.kernel.org, linux-kernel@vger.kernel.org References: <1644395873-3937-1-git-send-email-wangqing@vivo.com> <20220213175940.1066f5a8@jic23-huawei> <9e5ed543-cd45-85db-50b5-52c2afd54c55@wanadoo.fr> From: Christophe JAILLET In-Reply-To: <9e5ed543-cd45-85db-50b5-52c2afd54c55@wanadoo.fr> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,NICE_REPLY_A, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le 13/02/2022 à 19:50, Christophe JAILLET a écrit : > Le 13/02/2022 à 18:59, Jonathan Cameron a écrit : >> On Wed,  9 Feb 2022 00:37:53 -0800 >> Qing Wang wrote: >> >>> From: Wang Qing >>> >>> do_div() does a 64-by-32 division. >>> When the divisor is u64, do_div() truncates it to 32 bits, this means it >>> can test non-zero and be truncated to zero for division. >>> >>> fix do_div.cocci warning: >>> do_div() does a 64-by-32 division, please consider using div64_u64 >>> instead. >>> >>> Signed-off-by: Wang Qing >> These look correct to me.  Jyoti, please could give these a sanity check? >> > > This is wrong. > > See [1]. > > CJ > > [1]: > https://lore.kernel.org/linux-kernel/20211117112559.jix3hmx7uwqmuryg-bIcnvbaLZ9MEGnE8C9+IrQ@public.gmane.org/ Broken link, sorry: [1] https://lore.kernel.org/linux-kernel/20211117112559.jix3hmx7uwqmuryg@pengutronix.de/ > > >> Thanks, >> >> Jonathan >> >>> --- >>>   drivers/iio/common/scmi_sensors/scmi_iio.c | 10 +++++----- >>>   1 file changed, 5 insertions(+), 5 deletions(-) >>> >>> diff --git a/drivers/iio/common/scmi_sensors/scmi_iio.c >>> b/drivers/iio/common/scmi_sensors/scmi_iio.c >>> index d538bf3..d6df5da >>> --- a/drivers/iio/common/scmi_sensors/scmi_iio.c >>> +++ b/drivers/iio/common/scmi_sensors/scmi_iio.c >>> @@ -160,7 +160,7 @@ static int scmi_iio_set_odr_val(struct iio_dev >>> *iio_dev, int val, int val2) >>>       mult = scnprintf(buf, sizeof(buf), "%llu", sf) - 1; >>>       sec = int_pow(10, mult) * UHZ_PER_HZ; >>> -    do_div(sec, uHz); >>> +    div64_u64(sec, uHz); >>>       if (sec == 0) { >>>           dev_err(&iio_dev->dev, >>>               "Trying to set invalid sensor update value for sensor %s", >>> @@ -237,10 +237,10 @@ static void convert_ns_to_freq(u64 interval_ns, >>> u64 *hz, u64 *uhz) >>>       u64 rem, freq; >>>       freq = NSEC_PER_SEC; >>> -    rem = do_div(freq, interval_ns); >>> +    rem = div64_u64(freq, interval_ns); >>>       *hz = freq; >>>       *uhz = rem * 1000000UL; >>> -    do_div(*uhz, interval_ns); >>> +    div64_u64(*uhz, interval_ns); >>>   } >>>   static int scmi_iio_get_odr_val(struct iio_dev *iio_dev, int *val, >>> int *val2) >>> @@ -266,7 +266,7 @@ static int scmi_iio_get_odr_val(struct iio_dev >>> *iio_dev, int *val, int *val2) >>>       mult = SCMI_SENS_CFG_GET_UPDATE_EXP(sensor_config); >>>       if (mult < 0) { >>>           sensor_interval_mult = int_pow(10, abs(mult)); >>> -        do_div(sensor_update_interval, sensor_interval_mult); >>> +        div64_u64(sensor_update_interval, sensor_interval_mult); >>>       } else { >>>           sensor_interval_mult = int_pow(10, mult); >>>           sensor_update_interval = >>> @@ -500,7 +500,7 @@ static u64 scmi_iio_convert_interval_to_ns(u32 val) >>>       mult = SCMI_SENS_INTVL_GET_EXP(val); >>>       if (mult < 0) { >>>           sensor_interval_mult = int_pow(10, abs(mult)); >>> -        do_div(sensor_update_interval, sensor_interval_mult); >>> +        div64_u64(sensor_update_interval, sensor_interval_mult); >>>       } else { >>>           sensor_interval_mult = int_pow(10, mult); >>>           sensor_update_interval = >> >> > >