Linux: work around use of GPL-only symbol kasan_flag_enabled

We may not be able to avoid our code referencing the symbol, but we can
ensure that a symbol of that name is available to the linker during
build, and so not require linking the GPL-exported version.

Sponsored-by: https://despairlabs.com/sponsor/
Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Rob Norris <robn@despairlabs.com>
Closes #18009
Closes #18040
This commit is contained in:
Rob Norris
2025-12-11 05:04:57 +11:00
committed by Brian Behlendorf
parent 028d66b9dd
commit c9845a1332
5 changed files with 74 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
dnl #
dnl # 6.18: some architectures and config option causes the kasan_ inline
dnl # functions to reference the GPL-only symbol 'kasan_flag_enabled',
dnl # breaking the build. Detect this and work
dnl # around it.
AC_DEFUN([ZFS_AC_KERNEL_SRC_KASAN_ENABLED], [
ZFS_LINUX_TEST_SRC([kasan_enabled], [
#include <linux/kasan.h>
], [
kasan_enabled();
], [], [ZFS_META_LICENSE])
])
AC_DEFUN([ZFS_AC_KERNEL_KASAN_ENABLED], [
AC_MSG_CHECKING([whether kasan_enabled() is GPL-only])
ZFS_LINUX_TEST_RESULT([kasan_enabled_license], [
AC_MSG_RESULT(no)
], [
AC_MSG_RESULT(yes)
AC_DEFINE(HAVE_KASAN_ENABLED_GPL_ONLY, 1,
[kasan_enabled() is GPL-only])
])
])
+2
View File
@@ -138,6 +138,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_SRC], [
ZFS_AC_KERNEL_SRC_SOPS_FREE_INODE
ZFS_AC_KERNEL_SRC_NAMESPACE
ZFS_AC_KERNEL_SRC_INODE_GENERIC_DROP
ZFS_AC_KERNEL_SRC_KASAN_ENABLED
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_SRC_CPU_HAS_FEATURE
@@ -260,6 +261,7 @@ AC_DEFUN([ZFS_AC_KERNEL_TEST_RESULT], [
ZFS_AC_KERNEL_SOPS_FREE_INODE
ZFS_AC_KERNEL_NAMESPACE
ZFS_AC_KERNEL_INODE_GENERIC_DROP
ZFS_AC_KERNEL_KASAN_ENABLED
case "$host_cpu" in
powerpc*)
ZFS_AC_KERNEL_CPU_HAS_FEATURE