* [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 [flat|nested] 2+ messages in thread* 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
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®