On Mon, Oct 2, 2023 at 3:20 PM Nathan Chancellor <nathan@xxxxxxxxxx> wrote: > > -Wincompatible-function-pointer-types-strict aims to catch clang kernel > Control Flow Integrity (kCFI) violations at build time (rather than run > time) by validating function pointer assignments against the expected > prototype, similar to the existing -Wincompatible-function-pointer-types > that is considered a hard error in the kernel. The -strict variant > requires the types to match exactly, as opposed to just matching in > terms of ABI compatibility. This is primarily visible with int/unsigned > int in lieu of enum types or vice versa. > > The tree is not completely clean, so this warning cannot currently be > enabled unconditionally. However, there are only warnings in one > subsystem ('drivers/counter'), so it is really close. In order to > benefit from CI infrastructure that tests with W=1, enable this warning > at that level, so that new instances have a chance of being caught and > fixed during development. > > This should eventually be a hard error in a similar manner as > Wincompatible-function-pointer-types but some subsystems test > with W=1 + CONFIG_WERROR=n, so it would be rude to break their builds > when they do not care about warnings outside of their subsystem. > > Link: https://github.com/ClangBuiltLinux/linux/issues/1750 > Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx> Sounds like we're pretty close to just enabling this by default. Getting it on in W=1 for a cycle will help prevent any backslide. Reviewed-by: Nick Desaulniers <ndesaulniers@xxxxxxxxxx> > --- > scripts/Makefile.extrawarn | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/scripts/Makefile.extrawarn b/scripts/Makefile.extrawarn > index 2fe6f2828d37..9662f7fd6e39 100644 > --- a/scripts/Makefile.extrawarn > +++ b/scripts/Makefile.extrawarn > @@ -108,6 +108,7 @@ KBUILD_CFLAGS += $(call cc-option, -Wformat-overflow) > KBUILD_CFLAGS += $(call cc-option, -Wformat-truncation) > KBUILD_CFLAGS += $(call cc-option, -Wstringop-overflow) > KBUILD_CFLAGS += $(call cc-option, -Wstringop-truncation) > +KBUILD_CFLAGS += $(call cc-option, -Wincompatible-function-pointer-types-strict) > > KBUILD_CPPFLAGS += -Wundef > KBUILD_CPPFLAGS += -DKBUILD_EXTRA_WARN1 > > --- > base-commit: ce9ecca0238b140b88f43859b211c9fdfd8e5b70 > change-id: 20231002-enable-wincompatible-function-pointer-types-strict-w-1-4a56b99b8c6f > > Best regards, > -- > Nathan Chancellor <nathan@xxxxxxxxxx> > -- Thanks, ~Nick Desaulniers