summaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
authorBrian Behlendorf <[email protected]>2020-07-19 09:56:21 -0700
committerGitHub <[email protected]>2020-07-19 09:56:21 -0700
commite862b7ecfc6049df19cf0d439510f385a7707b8b (patch)
tree0522c698a48c711d37e3a1c0e7bbbb222f9e7c53 /config
parent8fbf432ae274fc227c38012230c3bf23bda64d64 (diff)
Linux 4.10 compat: has_capability()
Stock kernels older than 4.10 do not export the has_capability() function which is required by commit e59a377. To avoid breaking the build on older kernels revert to the safe legacy behavior and return EACCES when privileges cannot be checked. Reviewed-by: Ryan Moeller <[email protected]> Reviewed-by: Matt Ahrens <[email protected]> Signed-off-by: Brian Behlendorf <[email protected]> Closes #10565 Closes #10573
Diffstat (limited to 'config')
-rw-r--r--config/kernel-userns-capabilities.m429
1 files changed, 29 insertions, 0 deletions
diff --git a/config/kernel-userns-capabilities.m4 b/config/kernel-userns-capabilities.m4
index 68a7bd62c..026503623 100644
--- a/config/kernel-userns-capabilities.m4
+++ b/config/kernel-userns-capabilities.m4
@@ -20,6 +20,33 @@ AC_DEFUN([ZFS_AC_KERNEL_NS_CAPABLE], [
])
dnl #
+dnl # 4.10 API change
+dnl # has_capability() was exported.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_SRC_HAS_CAPABILITY], [
+ ZFS_LINUX_TEST_SRC([has_capability], [
+ #include <linux/capability.h>
+ ],[
+ struct task_struct *task = NULL;
+ int cap = 0;
+ bool result __attribute__ ((unused));
+
+ result = has_capability(task, cap);
+ ])
+])
+
+AC_DEFUN([ZFS_AC_KERNEL_HAS_CAPABILITY], [
+ AC_MSG_CHECKING([whether has_capability() is available])
+ ZFS_LINUX_TEST_RESULT_SYMBOL([has_capability],
+ [has_capability], [kernel/capability.c], [
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_HAS_CAPABILITY, 1, [has_capability() is available])
+ ],[
+ AC_MSG_RESULT(no)
+ ])
+])
+
+dnl #
dnl # 2.6.39 API change
dnl # struct user_namespace was added to struct cred_t as cred->user_ns member
dnl #
@@ -66,12 +93,14 @@ AC_DEFUN([ZFS_AC_KERNEL_KUID_HAS_MAPPING], [
AC_DEFUN([ZFS_AC_KERNEL_SRC_USERNS_CAPABILITIES], [
ZFS_AC_KERNEL_SRC_NS_CAPABLE
+ ZFS_AC_KERNEL_SRC_HAS_CAPABILITY
ZFS_AC_KERNEL_SRC_CRED_USER_NS
ZFS_AC_KERNEL_SRC_KUID_HAS_MAPPING
])
AC_DEFUN([ZFS_AC_KERNEL_USERNS_CAPABILITIES], [
ZFS_AC_KERNEL_NS_CAPABLE
+ ZFS_AC_KERNEL_HAS_CAPABILITY
ZFS_AC_KERNEL_CRED_USER_NS
ZFS_AC_KERNEL_KUID_HAS_MAPPING
])