diff options
author | Tomohiro Kusumi <[email protected]> | 2019-05-25 04:26:18 +0900 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2019-05-24 12:26:18 -0700 |
commit | 8708fd888f8a2bd3c68ccc059a579ba7ff41f79d (patch) | |
tree | 7232e088cfefed488c10871a1307ab7407b59fe3 /config | |
parent | 2e8c315fc6a9999e3c51c4b409dcd10a9e1accda (diff) |
Linux 2.6.39 compat: Test if kstrtoul() exists
kstrtoul() exists only after torvalds/linux@33ee3b2e2eb9 in 2.6.39.
Use strict_strtoul() if kstrtoul() doesn't exist.
Note that strict_strtoul() has existed as an alias for kstrtoul()
for a while, but removed in torvalds/linux@3db2e9cdc085.
It looks like RHEL6 (2.6.32 based) has backported kstrtoul(),
and this caused build CI to pass compilation test.
It should fail on vanilla < 2.6.39 kernels or distro kernels without
backport as reported in #8760.
--
# grep "kstrtoul(" /lib/modules/2.6.32-754.12.1.el6.x86_64/build/ \
include/linux/kernel.h >/dev/null
# echo $?
0
Reviewed-by: Brian Behlendorf <[email protected]>
Reviewed-by: loli10K <[email protected]>
Signed-off-by: Tomohiro Kusumi <[email protected]>
Closes #8760
Closes #8761
Diffstat (limited to 'config')
-rw-r--r-- | config/kernel-kstrtoul.m4 | 21 | ||||
-rw-r--r-- | config/kernel.m4 | 1 |
2 files changed, 22 insertions, 0 deletions
diff --git a/config/kernel-kstrtoul.m4 b/config/kernel-kstrtoul.m4 new file mode 100644 index 000000000..5530e0e2d --- /dev/null +++ b/config/kernel-kstrtoul.m4 @@ -0,0 +1,21 @@ +dnl # +dnl # 2.6.39 API change +dnl # +dnl # 33ee3b2e2eb9 kstrto*: converting strings to integers done (hopefully) right +dnl # +dnl # If kstrtoul() doesn't exist, fallback to use strict_strtoul() which has +dnl # existed since 2.6.25. +dnl # +AC_DEFUN([ZFS_AC_KERNEL_KSTRTOUL], [ + AC_MSG_CHECKING([whether kstrtoul() exists]) + ZFS_LINUX_TRY_COMPILE([ + #include <linux/kernel.h> + ],[ + int ret __attribute__ ((unused)) = kstrtoul(NULL, 10, NULL); + ],[ + AC_MSG_RESULT(yes) + AC_DEFINE(HAVE_KSTRTOUL, 1, [kstrtoul() exists]) + ],[ + AC_MSG_RESULT(no) + ]) +]) diff --git a/config/kernel.m4 b/config/kernel.m4 index 54f39164b..6fd0ad5b9 100644 --- a/config/kernel.m4 +++ b/config/kernel.m4 @@ -167,6 +167,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [ ZFS_AC_KERNEL_TOTALHIGH_PAGES ZFS_AC_KERNEL_BLK_QUEUE_DISCARD ZFS_AC_KERNEL_BLK_QUEUE_SECURE_ERASE + ZFS_AC_KERNEL_KSTRTOUL AS_IF([test "$LINUX_OBJ" != "$LINUX"], [ KERNEL_MAKE="$KERNEL_MAKE O=$LINUX_OBJ" |