Re: [PATCH net-next] stddef: don't include compiler_types.h in the uAPI header
From: Jakub Kicinski <kuba@kernel.org>
Date: 2025-08-20 17:17:53
Subsystem:
the rest · Maintainer:
Linus Torvalds
On Mon, 18 Aug 2025 21:06:10 -0700 Kees Cook wrote:
quoted
Since nothing needs this include, let's remove it.But yes, nothing uses compiler_types.h via uapi/linux/stddef.h. That does seem to be true.
While staring at the kbuild bot report (which I can't repro :|) I realized this include is to give kernel's __counted_by and friends precedence over the empty uAPI-facing defines. Not sure this is the most fortunate approach, personally I'd rather wrap our empty user-space-facing defines under ifndef __KERNEL__. I think it'd be better from "include what you need" perspective. Perhaps stddef pulling in compiler annotations is expected, dunno... Would you be okay with:
diff --git a/scripts/headers_install.sh b/scripts/headers_install.sh
index 6bbccb43f7e7..4c20c62c4faf 100755
--- a/scripts/headers_install.sh
+++ b/scripts/headers_install.sh@@ -32,7 +32,7 @@ fi sed -E -e ' s/([[:space:](])(__user|__force|__iomem)[[:space:]]/\1/g s/__attribute_const__([[:space:]]|$)/\1/g - s@^#include <linux/compiler(|_types).h>@@ + s@^#include <linux/compiler.h>@@ s/(^|[^a-zA-Z0-9])__packed([^a-zA-Z0-9_]|$)/\1__attribute__((packed))\2/g s/(^|[[:space:](])(inline|asm|volatile)([[:space:](]|$)/\1__\2__\3/g s@#(ifndef|define|endif[[:space:]]*/[*])[[:space:]]*_UAPI@#\1 @
diff --git a/include/uapi/linux/stddef.h b/include/uapi/linux/stddef.h
index b87df1b485c2..9a28f7d9a334 100644
--- a/include/uapi/linux/stddef.h
+++ b/include/uapi/linux/stddef.h@@ -2,7 +2,9 @@ #ifndef _UAPI_LINUX_STDDEF_H #define _UAPI_LINUX_STDDEF_H +#ifdef __KERNEL__ #include <linux/compiler_types.h> +#endif
? As you pointed out compiler_types.h is only included under stddef.h so the special handling in the installation script is easily avoided.