All of lore.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.