Re: [PATCH v3 06/16] rbd: convert timeouts to secs_to_jiffies()
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
- Subject: Re: [PATCH v3 06/16] rbd: convert timeouts to secs_to_jiffies()
- From: Easwar Hariharan <eahariha@xxxxxxxxxxxxxxxxxxx>
- Date: Tue, 25 Feb 2025 16:02:42 -0800
- Cc: eahariha@xxxxxxxxxxxxxxxxxxx, Frank.Li@xxxxxxx, James.Bottomley@xxxxxxxxxxxxxxxxxxxxx, Julia.Lawall@xxxxxxxx, Shyam-sundar.S-k@xxxxxxx, akpm@xxxxxxxxxxxxxxxxxxxx, axboe@xxxxxxxxx, broonie@xxxxxxxxxx, cassel@xxxxxxxxxx, cem@xxxxxxxxxx, ceph-devel@xxxxxxxxxxxxxxx, clm@xxxxxx, cocci@xxxxxxxx, dick.kennedy@xxxxxxxxxxxx, djwong@xxxxxxxxxx, dlemoal@xxxxxxxxxx, dongsheng.yang@xxxxxxxxxxxx, dri-devel@xxxxxxxxxxxxxxxxxxxxx, dsterba@xxxxxxxx, festevam@xxxxxxxxx, hch@xxxxxx, hdegoede@xxxxxxxxxx, hmh@xxxxxxxxxx, ibm-acpi-devel@xxxxxxxxxxxxxxxxxxxxx, idryomov@xxxxxxxxx, ilpo.jarvinen@xxxxxxxxxxxxxxx, imx@xxxxxxxxxxxxxxx, james.smart@xxxxxxxxxxxx, jgg@xxxxxxxx, josef@xxxxxxxxxxxxxx, kalesh-anakkur.purayil@xxxxxxxxxxxx, kbusch@xxxxxxxxxx, kernel@xxxxxxxxxxxxxx, leon@xxxxxxxxxx, linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, linux-block@xxxxxxxxxxxxxxx, linux-btrfs@xxxxxxxxxxxxxxx, linux-ide@xxxxxxxxxxxxxxx, linux-kernel@xxxxxxxxxxxxxxx, linux-nvme@xxxxxxxxxxxxxxxxxxx, linux-pm@xxxxxxxxxxxxxxx, linux-rdma@xxxxxxxxxxxxxxx, linux-scsi@xxxxxxxxxxxxxxx, linux-sound@xxxxxxxxxxxxxxx, linux-spi@xxxxxxxxxxxxxxx, linux-xfs@xxxxxxxxxxxxxxx, martin.petersen@xxxxxxxxxx, nicolas.palix@xxxxxxx, ogabbay@xxxxxxxxxx, perex@xxxxxxxx, platform-driver-x86@xxxxxxxxxxxxxxx, s.hauer@xxxxxxxxxxxxxx, sagi@xxxxxxxxxxx, selvin.xavier@xxxxxxxxxxxx, shawnguo@xxxxxxxxxx, sre@xxxxxxxxxx, tiwai@xxxxxxxx, xiubli@xxxxxxxxxx, yaron.avizrat@xxxxxxxxx
- In-reply-to: <e53d7586-b278-4338-95a2-fa768d5d8b5e@wanadoo.fr>
- References: <20250225-converge-secs-to-jiffies-part-two-v3-0-a43967e36c88@linux.microsoft.com> <20250225-converge-secs-to-jiffies-part-two-v3-6-a43967e36c88@linux.microsoft.com> <e53d7586-b278-4338-95a2-fa768d5d8b5e@wanadoo.fr>
- User-agent: Mozilla Thunderbird
On 2/25/2025 1:09 PM, Christophe JAILLET wrote:
> Le 25/02/2025 à 21:17, Easwar Hariharan a écrit :
>> Commit b35108a51cf7 ("jiffies: Define secs_to_jiffies()") introduced
>> secs_to_jiffies(). As the value here is a multiple of 1000, use
>> secs_to_jiffies() instead of msecs_to_jiffies() to avoid the multiplication
>>
>> This is converted using scripts/coccinelle/misc/secs_to_jiffies.cocci with
>> the following Coccinelle rules:
>>
>> @depends on patch@ expression E; @@
>>
>> -msecs_to_jiffies(E * 1000)
>> +secs_to_jiffies(E)
>>
>> @depends on patch@ expression E; @@
>>
>> -msecs_to_jiffies(E * MSEC_PER_SEC)
>> +secs_to_jiffies(E)
>>
>> While here, remove the no-longer necessary check for range since there's
>> no multiplication involved.
>
> I'm not sure this is correct.
> Now you multiply by HZ and things can still overflow.
>
>
> Hoping I got casting right:
>
> #define MSEC_PER_SEC 1000L
> #define HZ 100
>
>
> #define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
>
> static inline unsigned long _msecs_to_jiffies(const unsigned int m)
> {
> return (m + (MSEC_PER_SEC / HZ) - 1) / (MSEC_PER_SEC / HZ);
> }
>
> int main() {
>
> int n = INT_MAX - 5;
>
> printf("res = %ld\n", secs_to_jiffies(n));
> printf("res = %ld\n", _msecs_to_jiffies(1000 * n));
>
> return 0;
> }
>
>
> gives :
>
> res = -600
> res = 429496130
>
> with msec, the previous code would catch the overflow, now it overflows silently.
>
> untested, but maybe:
> if (result.uint_32 > INT_MAX / HZ)
> goto out_of_range;
>
> ?
>
> CJ
>
Thanks for the review! I was able to replicate your results, I'll try this range check
and get back.
Thanks,
Easwar (he/him)
[Index of Archives]
[Linux Kernel]
[Linux ARM (vger)]
[Linux ARM MSM]
[Linux Omap]
[Linux Arm]
[Linux Tegra]
[Fedora ARM]
[Linux for Samsung SOC]
[eCos]
[Linux Fastboot]
[Gcc Help]
[Git]
[DCCP]
[IETF Announce]
[Security]
[Linux MIPS]
[Yosemite Campsites]
|