diff options
author | Brian Behlendorf <[email protected]> | 2020-07-19 09:56:21 -0700 |
---|---|---|
committer | GitHub <[email protected]> | 2020-07-19 09:56:21 -0700 |
commit | e862b7ecfc6049df19cf0d439510f385a7707b8b (patch) | |
tree | 0522c698a48c711d37e3a1c0e7bbbb222f9e7c53 /config | |
parent | 8fbf432ae274fc227c38012230c3bf23bda64d64 (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.m4 | 29 |
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 ]) |