public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion
@ 2025-01-30 19:26 Easwar Hariharan
  2025-01-31  7:06 ` Jiri Slaby
  2025-01-31  8:43 ` [tip: timers/urgent] jiffies: Cast to unsigned long in " tip-bot2 for Easwar Hariharan
  0 siblings, 2 replies; 6+ messages in thread
From: Easwar Hariharan @ 2025-01-30 19:26 UTC (permalink / raw)
  To: Thomas Gleixner, Anna-Maria Behnsen, Easwar Hariharan,
	Geert Uytterhoeven, Luiz Augusto von Dentz, Miguel Ojeda,
	open list
  Cc: stable, Andrew Morton, kernel test robot

While converting users of msecs_to_jiffies(), lkp reported that some
range checks would always be true because of the mismatch between the
implied int value of secs_to_jiffies() vs the unsigned long
return value of the msecs_to_jiffies() calls it was replacing. Fix this
by casting secs_to_jiffies() values as unsigned long.

Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
CC: stable@vger.kernel.org # 6.13+
CC: Andrew Morton <akpm@linux-foundation.org>
Reported-by: kernel test robot <lkp@intel.com>
Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
---
 include/linux/jiffies.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index ed945f42e064..0ea8c9887429 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -537,7 +537,7 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
  *
  * Return: jiffies value
  */
-#define secs_to_jiffies(_secs) ((_secs) * HZ)
+#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
 
 extern unsigned long __usecs_to_jiffies(const unsigned int u);
 #if !(USEC_PER_SEC % HZ)
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion
  2025-01-30 19:26 [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion Easwar Hariharan
@ 2025-01-31  7:06 ` Jiri Slaby
  2025-01-31  8:30   ` Thomas Gleixner
  2025-01-31  8:43 ` [tip: timers/urgent] jiffies: Cast to unsigned long in " tip-bot2 for Easwar Hariharan
  1 sibling, 1 reply; 6+ messages in thread
From: Jiri Slaby @ 2025-01-31  7:06 UTC (permalink / raw)
  To: Easwar Hariharan, Thomas Gleixner, Anna-Maria Behnsen,
	Geert Uytterhoeven, Luiz Augusto von Dentz, Miguel Ojeda,
	open list
  Cc: stable, Andrew Morton, kernel test robot

On 30. 01. 25, 20:26, Easwar Hariharan wrote:
> While converting users of msecs_to_jiffies(), lkp reported that some
> range checks would always be true because of the mismatch between the
> implied int value of secs_to_jiffies() vs the unsigned long
> return value of the msecs_to_jiffies() calls it was replacing. Fix this
> by casting secs_to_jiffies() values as unsigned long.
> 
> Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
> CC: stable@vger.kernel.org # 6.13+
> CC: Andrew Morton <akpm@linux-foundation.org>
> Reported-by: kernel test robot <lkp@intel.com>
> Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
> ---
>   include/linux/jiffies.h | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
> index ed945f42e064..0ea8c9887429 100644
> --- a/include/linux/jiffies.h
> +++ b/include/linux/jiffies.h
> @@ -537,7 +537,7 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
>    *
>    * Return: jiffies value
>    */
> -#define secs_to_jiffies(_secs) ((_secs) * HZ)
> +#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)

Could you just switch the fun to an inline instead?

-- 
js
suse labs


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion
  2025-01-31  7:06 ` Jiri Slaby
@ 2025-01-31  8:30   ` Thomas Gleixner
  2025-01-31  8:52     ` Jiri Slaby
  0 siblings, 1 reply; 6+ messages in thread
From: Thomas Gleixner @ 2025-01-31  8:30 UTC (permalink / raw)
  To: Jiri Slaby, Easwar Hariharan, Anna-Maria Behnsen,
	Geert Uytterhoeven, Luiz Augusto von Dentz, Miguel Ojeda,
	open list
  Cc: stable, Andrew Morton, kernel test robot

On Fri, Jan 31 2025 at 08:06, Jiri Slaby wrote:
> On 30. 01. 25, 20:26, Easwar Hariharan wrote:
>> While converting users of msecs_to_jiffies(), lkp reported that some
>> range checks would always be true because of the mismatch between the
>> implied int value of secs_to_jiffies() vs the unsigned long
>> return value of the msecs_to_jiffies() calls it was replacing. Fix this
>> by casting secs_to_jiffies() values as unsigned long.
>> 
>> Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
>> CC: stable@vger.kernel.org # 6.13+
>> CC: Andrew Morton <akpm@linux-foundation.org>
>> Reported-by: kernel test robot <lkp@intel.com>
>> Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
>> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
>> ---
>>   include/linux/jiffies.h | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>> 
>> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
>> index ed945f42e064..0ea8c9887429 100644
>> --- a/include/linux/jiffies.h
>> +++ b/include/linux/jiffies.h
>> @@ -537,7 +537,7 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
>>    *
>>    * Return: jiffies value
>>    */
>> -#define secs_to_jiffies(_secs) ((_secs) * HZ)
>> +#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
>
> Could you just switch the fun to an inline instead?

It's a macro so it can be used in static initializers.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [tip: timers/urgent] jiffies: Cast to unsigned long in secs_to_jiffies() conversion
  2025-01-30 19:26 [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion Easwar Hariharan
  2025-01-31  7:06 ` Jiri Slaby
@ 2025-01-31  8:43 ` tip-bot2 for Easwar Hariharan
  1 sibling, 0 replies; 6+ messages in thread
From: tip-bot2 for Easwar Hariharan @ 2025-01-31  8:43 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: kernel test robot, Easwar Hariharan, Thomas Gleixner, stable, x86,
	linux-kernel

The following commit has been merged into the timers/urgent branch of tip:

Commit-ID:     bb2784d9ab49587ba4fbff37a319fff2924db289
Gitweb:        https://git.kernel.org/tip/bb2784d9ab49587ba4fbff37a319fff2924db289
Author:        Easwar Hariharan <eahariha@linux.microsoft.com>
AuthorDate:    Thu, 30 Jan 2025 19:26:58 
Committer:     Thomas Gleixner <tglx@linutronix.de>
CommitterDate: Fri, 31 Jan 2025 09:30:49 +01:00

jiffies: Cast to unsigned long in secs_to_jiffies() conversion

While converting users of msecs_to_jiffies(), lkp reported that some range
checks would always be true because of the mismatch between the implied int
value of secs_to_jiffies() vs the unsigned long return value of the
msecs_to_jiffies() calls it was replacing.

Fix this by casting the secs_to_jiffies() input value to unsigned long.

Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
Reported-by: kernel test robot <lkp@intel.com>
Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/all/20250130192701.99626-1-eahariha@linux.microsoft.com
Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
---
 include/linux/jiffies.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
index ed945f4..0ea8c98 100644
--- a/include/linux/jiffies.h
+++ b/include/linux/jiffies.h
@@ -537,7 +537,7 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
  *
  * Return: jiffies value
  */
-#define secs_to_jiffies(_secs) ((_secs) * HZ)
+#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
 
 extern unsigned long __usecs_to_jiffies(const unsigned int u);
 #if !(USEC_PER_SEC % HZ)

^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion
  2025-01-31  8:30   ` Thomas Gleixner
@ 2025-01-31  8:52     ` Jiri Slaby
  2025-01-31 17:52       ` Easwar Hariharan
  0 siblings, 1 reply; 6+ messages in thread
From: Jiri Slaby @ 2025-01-31  8:52 UTC (permalink / raw)
  To: Thomas Gleixner, Easwar Hariharan, Anna-Maria Behnsen,
	Geert Uytterhoeven, Luiz Augusto von Dentz, Miguel Ojeda,
	open list
  Cc: stable, Andrew Morton, kernel test robot

On 31. 01. 25, 9:30, Thomas Gleixner wrote:
> On Fri, Jan 31 2025 at 08:06, Jiri Slaby wrote:
>> On 30. 01. 25, 20:26, Easwar Hariharan wrote:
>>> While converting users of msecs_to_jiffies(), lkp reported that some
>>> range checks would always be true because of the mismatch between the
>>> implied int value of secs_to_jiffies() vs the unsigned long
>>> return value of the msecs_to_jiffies() calls it was replacing. Fix this
>>> by casting secs_to_jiffies() values as unsigned long.
>>>
>>> Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
>>> CC: stable@vger.kernel.org # 6.13+
>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>> Reported-by: kernel test robot <lkp@intel.com>
>>> Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-lkp@intel.com/
>>> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
>>> ---
>>>    include/linux/jiffies.h | 2 +-
>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
>>> index ed945f42e064..0ea8c9887429 100644
>>> --- a/include/linux/jiffies.h
>>> +++ b/include/linux/jiffies.h
>>> @@ -537,7 +537,7 @@ static __always_inline unsigned long msecs_to_jiffies(const unsigned int m)
>>>     *
>>>     * Return: jiffies value
>>>     */
>>> -#define secs_to_jiffies(_secs) ((_secs) * HZ)
>>> +#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
>>
>> Could you just switch the fun to an inline instead?
> 
> It's a macro so it can be used in static initializers.

It's the only one from the *_to_jiffies() family we offer. And I fail to 
find such a use (by a quick grep, it only might be hidden)? People 
apparently use "* HZ" in initializers...

So sure, iff there is this intention for this very one, keep it as macro.

-- 
js
suse labs

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion
  2025-01-31  8:52     ` Jiri Slaby
@ 2025-01-31 17:52       ` Easwar Hariharan
  0 siblings, 0 replies; 6+ messages in thread
From: Easwar Hariharan @ 2025-01-31 17:52 UTC (permalink / raw)
  To: Jiri Slaby
  Cc: Thomas Gleixner, Anna-Maria Behnsen, Geert Uytterhoeven,
	Luiz Augusto von Dentz, Miguel Ojeda, open list, eahariha, stable,
	Andrew Morton, kernel test robot

On 1/31/2025 12:52 AM, Jiri Slaby wrote:
> On 31. 01. 25, 9:30, Thomas Gleixner wrote:
>> On Fri, Jan 31 2025 at 08:06, Jiri Slaby wrote:
>>> On 30. 01. 25, 20:26, Easwar Hariharan wrote:
>>>> While converting users of msecs_to_jiffies(), lkp reported that some
>>>> range checks would always be true because of the mismatch between the
>>>> implied int value of secs_to_jiffies() vs the unsigned long
>>>> return value of the msecs_to_jiffies() calls it was replacing. Fix this
>>>> by casting secs_to_jiffies() values as unsigned long.
>>>>
>>>> Fixes: b35108a51cf7ba ("jiffies: Define secs_to_jiffies()")
>>>> CC: stable@vger.kernel.org # 6.13+
>>>> CC: Andrew Morton <akpm@linux-foundation.org>
>>>> Reported-by: kernel test robot <lkp@intel.com>
>>>> Closes: https://lore.kernel.org/oe-kbuild-all/202501301334.NB6NszQR-
>>>> lkp@intel.com/
>>>> Signed-off-by: Easwar Hariharan <eahariha@linux.microsoft.com>
>>>> ---
>>>>    include/linux/jiffies.h | 2 +-
>>>>    1 file changed, 1 insertion(+), 1 deletion(-)
>>>>
>>>> diff --git a/include/linux/jiffies.h b/include/linux/jiffies.h
>>>> index ed945f42e064..0ea8c9887429 100644
>>>> --- a/include/linux/jiffies.h
>>>> +++ b/include/linux/jiffies.h
>>>> @@ -537,7 +537,7 @@ static __always_inline unsigned long
>>>> msecs_to_jiffies(const unsigned int m)
>>>>     *
>>>>     * Return: jiffies value
>>>>     */
>>>> -#define secs_to_jiffies(_secs) ((_secs) * HZ)
>>>> +#define secs_to_jiffies(_secs) (unsigned long)((_secs) * HZ)
>>>
>>> Could you just switch the fun to an inline instead?
>>
>> It's a macro so it can be used in static initializers.
> 
> It's the only one from the *_to_jiffies() family we offer. And I fail to
> find such a use (by a quick grep, it only might be hidden)? People
> apparently use "* HZ" in initializers...
> 
> So sure, iff there is this intention for this very one, keep it as macro.
> 

Yes, the intent is to convert those usages of "* HZ" to use
secs_to_jiffies() for better readability.

Thanks,
Easwar

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-01-31 17:52 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-30 19:26 [PATCH v2] jiffies: Cast to unsigned long for secs_to_jiffies() conversion Easwar Hariharan
2025-01-31  7:06 ` Jiri Slaby
2025-01-31  8:30   ` Thomas Gleixner
2025-01-31  8:52     ` Jiri Slaby
2025-01-31 17:52       ` Easwar Hariharan
2025-01-31  8:43 ` [tip: timers/urgent] jiffies: Cast to unsigned long in " tip-bot2 for Easwar Hariharan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox