1dnl # 2dnl # 2.6.39 API change, 3dnl # The is_owner_or_cap() macro was renamed to inode_owner_or_capable(), 4dnl # This is used for permission checks in the xattr and file attribute call 5dnl # paths. 6dnl # 7dnl # 5.12 API change, 8dnl # inode_owner_or_capable() now takes struct user_namespace * 9dnl # to support idmapped mounts 10dnl # 11AC_DEFUN([ZFS_AC_KERNEL_SRC_INODE_OWNER_OR_CAPABLE], [ 12 ZFS_LINUX_TEST_SRC([inode_owner_or_capable], [ 13 #include <linux/fs.h> 14 ],[ 15 struct inode *ip = NULL; 16 (void) inode_owner_or_capable(ip); 17 ]) 18 19 ZFS_LINUX_TEST_SRC([inode_owner_or_capable_userns], [ 20 #include <linux/fs.h> 21 ],[ 22 struct inode *ip = NULL; 23 (void) inode_owner_or_capable(&init_user_ns, ip); 24 ]) 25 26 ZFS_LINUX_TEST_SRC([inode_owner_or_capable_mnt_idmap], [ 27 #include <linux/fs.h> 28 #include <linux/mnt_idmapping.h> 29 ],[ 30 struct inode *ip = NULL; 31 (void) inode_owner_or_capable(&nop_mnt_idmap, ip); 32 ]) 33]) 34 35AC_DEFUN([ZFS_AC_KERNEL_INODE_OWNER_OR_CAPABLE], [ 36 AC_MSG_CHECKING([whether inode_owner_or_capable() exists]) 37 ZFS_LINUX_TEST_RESULT([inode_owner_or_capable], [ 38 AC_MSG_RESULT(yes) 39 AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE, 1, 40 [inode_owner_or_capable() exists]) 41 ], [ 42 AC_MSG_RESULT(no) 43 44 AC_MSG_CHECKING( 45 [whether inode_owner_or_capable() takes user_ns]) 46 ZFS_LINUX_TEST_RESULT([inode_owner_or_capable_userns], [ 47 AC_MSG_RESULT(yes) 48 AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE_USERNS, 1, 49 [inode_owner_or_capable() takes user_ns]) 50 ],[ 51 AC_MSG_RESULT(no) 52 AC_MSG_CHECKING( 53 [whether inode_owner_or_capable() takes mnt_idmap]) 54 ZFS_LINUX_TEST_RESULT([inode_owner_or_capable_mnt_idmap], [ 55 AC_MSG_RESULT(yes) 56 AC_DEFINE(HAVE_INODE_OWNER_OR_CAPABLE_IDMAP, 1, 57 [inode_owner_or_capable() takes mnt_idmap]) 58 ], [ 59 ZFS_LINUX_TEST_ERROR([capability]) 60 ]) 61 ]) 62 ]) 63]) 64