* Re: [PATCH] overflow: Make sure size helpers are always inlined
2026-02-24 23:24 [PATCH] overflow: Make sure size helpers are always inlined Kees Cook
@ 2026-02-24 8:41 ` Gustavo A. R. Silva
0 siblings, 0 replies; 2+ messages in thread
From: Gustavo A. R. Silva @ 2026-02-24 8:41 UTC (permalink / raw)
To: Kees Cook, Gustavo A. R. Silva; +Cc: linux-hardening, linux-kernel
On 2/25/26 08:24, Kees Cook wrote:
> With kmalloc_obj() performing implicit size calculations, the embedded
> size_mul() calls, while marked inline, were not always being inlined.
> I noticed a couple places where allocations were making a call out for
> things that would otherwise be compile-time calculated. Force the
> compilers to always inline these calculations.
>
> Signed-off-by: Kees Cook <kees@kernel.org>
Reviewed-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Thanks!
-Gustavo
> ---
> Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
> Cc: <linux-hardening@vger.kernel.org>
> ---
> include/linux/overflow.h | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/include/linux/overflow.h b/include/linux/overflow.h
> index eddd987a8513..a8cb6319b4fb 100644
> --- a/include/linux/overflow.h
> +++ b/include/linux/overflow.h
> @@ -42,7 +42,7 @@
> * both the type-agnostic benefits of the macros while also being able to
> * enforce that the return value is, in fact, checked.
> */
> -static inline bool __must_check __must_check_overflow(bool overflow)
> +static __always_inline bool __must_check __must_check_overflow(bool overflow)
> {
> return unlikely(overflow);
> }
> @@ -327,7 +327,7 @@ static inline bool __must_check __must_check_overflow(bool overflow)
> * with any overflow causing the return value to be SIZE_MAX. The
> * lvalue must be size_t to avoid implicit type conversion.
> */
> -static inline size_t __must_check size_mul(size_t factor1, size_t factor2)
> +static __always_inline size_t __must_check size_mul(size_t factor1, size_t factor2)
> {
> size_t bytes;
>
> @@ -346,7 +346,7 @@ static inline size_t __must_check size_mul(size_t factor1, size_t factor2)
> * with any overflow causing the return value to be SIZE_MAX. The
> * lvalue must be size_t to avoid implicit type conversion.
> */
> -static inline size_t __must_check size_add(size_t addend1, size_t addend2)
> +static __always_inline size_t __must_check size_add(size_t addend1, size_t addend2)
> {
> size_t bytes;
>
> @@ -367,7 +367,7 @@ static inline size_t __must_check size_add(size_t addend1, size_t addend2)
> * argument may be SIZE_MAX (or the result with be forced to SIZE_MAX).
> * The lvalue must be size_t to avoid implicit type conversion.
> */
> -static inline size_t __must_check size_sub(size_t minuend, size_t subtrahend)
> +static __always_inline size_t __must_check size_sub(size_t minuend, size_t subtrahend)
> {
> size_t bytes;
>
^ permalink raw reply [flat|nested] 2+ messages in thread
* [PATCH] overflow: Make sure size helpers are always inlined
@ 2026-02-24 23:24 Kees Cook
2026-02-24 8:41 ` Gustavo A. R. Silva
0 siblings, 1 reply; 2+ messages in thread
From: Kees Cook @ 2026-02-24 23:24 UTC (permalink / raw)
To: Gustavo A. R. Silva; +Cc: Kees Cook, linux-hardening, linux-kernel
With kmalloc_obj() performing implicit size calculations, the embedded
size_mul() calls, while marked inline, were not always being inlined.
I noticed a couple places where allocations were making a call out for
things that would otherwise be compile-time calculated. Force the
compilers to always inline these calculations.
Signed-off-by: Kees Cook <kees@kernel.org>
---
Cc: "Gustavo A. R. Silva" <gustavoars@kernel.org>
Cc: <linux-hardening@vger.kernel.org>
---
include/linux/overflow.h | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/include/linux/overflow.h b/include/linux/overflow.h
index eddd987a8513..a8cb6319b4fb 100644
--- a/include/linux/overflow.h
+++ b/include/linux/overflow.h
@@ -42,7 +42,7 @@
* both the type-agnostic benefits of the macros while also being able to
* enforce that the return value is, in fact, checked.
*/
-static inline bool __must_check __must_check_overflow(bool overflow)
+static __always_inline bool __must_check __must_check_overflow(bool overflow)
{
return unlikely(overflow);
}
@@ -327,7 +327,7 @@ static inline bool __must_check __must_check_overflow(bool overflow)
* with any overflow causing the return value to be SIZE_MAX. The
* lvalue must be size_t to avoid implicit type conversion.
*/
-static inline size_t __must_check size_mul(size_t factor1, size_t factor2)
+static __always_inline size_t __must_check size_mul(size_t factor1, size_t factor2)
{
size_t bytes;
@@ -346,7 +346,7 @@ static inline size_t __must_check size_mul(size_t factor1, size_t factor2)
* with any overflow causing the return value to be SIZE_MAX. The
* lvalue must be size_t to avoid implicit type conversion.
*/
-static inline size_t __must_check size_add(size_t addend1, size_t addend2)
+static __always_inline size_t __must_check size_add(size_t addend1, size_t addend2)
{
size_t bytes;
@@ -367,7 +367,7 @@ static inline size_t __must_check size_add(size_t addend1, size_t addend2)
* argument may be SIZE_MAX (or the result with be forced to SIZE_MAX).
* The lvalue must be size_t to avoid implicit type conversion.
*/
-static inline size_t __must_check size_sub(size_t minuend, size_t subtrahend)
+static __always_inline size_t __must_check size_sub(size_t minuend, size_t subtrahend)
{
size_t bytes;
--
2.34.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-24 23:42 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-24 23:24 [PATCH] overflow: Make sure size helpers are always inlined Kees Cook
2026-02-24 8:41 ` Gustavo A. R. Silva
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.