xref: /freebsd-src/sys/contrib/openzfs/config/kernel-inode-permission.m4 (revision 7a7741af18d6c8a804cc643cb7ecda9d730c6aa6)
1716fd348SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_SRC_PERMISSION], [
2716fd348SMartin Matuska	dnl #
3d411c1d6SMartin Matuska	dnl # 6.3 API change
4d411c1d6SMartin Matuska	dnl # iops->permission() now takes struct mnt_idmap*
5d411c1d6SMartin Matuska	dnl # as its first arg
6d411c1d6SMartin Matuska	dnl #
7d411c1d6SMartin Matuska	ZFS_LINUX_TEST_SRC([permission_mnt_idmap], [
8d411c1d6SMartin Matuska		#include <linux/fs.h>
9d411c1d6SMartin Matuska		#include <linux/sched.h>
10d411c1d6SMartin Matuska
11fd45b686SMartin Matuska		static int test_permission(struct mnt_idmap *idmap,
12d411c1d6SMartin Matuska		    struct inode *inode, int mask) { return 0; }
13d411c1d6SMartin Matuska
14d411c1d6SMartin Matuska		static const struct inode_operations
15d411c1d6SMartin Matuska			iops __attribute__ ((unused)) = {
16fd45b686SMartin Matuska			.permission             = test_permission,
17d411c1d6SMartin Matuska		};
18d411c1d6SMartin Matuska	],[])
19d411c1d6SMartin Matuska
20d411c1d6SMartin Matuska	dnl #
21716fd348SMartin Matuska	dnl # 5.12 API change that added the struct user_namespace* arg
22716fd348SMartin Matuska	dnl # to the front of this function type's arg list.
23716fd348SMartin Matuska	dnl #
24716fd348SMartin Matuska	ZFS_LINUX_TEST_SRC([permission_userns], [
25716fd348SMartin Matuska		#include <linux/fs.h>
26716fd348SMartin Matuska		#include <linux/sched.h>
27716fd348SMartin Matuska
28fd45b686SMartin Matuska		static int test_permission(struct user_namespace *userns,
29716fd348SMartin Matuska		    struct inode *inode, int mask) { return 0; }
30716fd348SMartin Matuska
31716fd348SMartin Matuska		static const struct inode_operations
32716fd348SMartin Matuska			iops __attribute__ ((unused)) = {
33fd45b686SMartin Matuska			.permission		= test_permission,
34716fd348SMartin Matuska		};
35716fd348SMartin Matuska	],[])
36716fd348SMartin Matuska])
37716fd348SMartin Matuska
38716fd348SMartin MatuskaAC_DEFUN([ZFS_AC_KERNEL_PERMISSION], [
39d411c1d6SMartin Matuska	AC_MSG_CHECKING([whether iops->permission() takes struct mnt_idmap*])
40d411c1d6SMartin Matuska	ZFS_LINUX_TEST_RESULT([permission_mnt_idmap], [
41d411c1d6SMartin Matuska		AC_MSG_RESULT(yes)
42d411c1d6SMartin Matuska		AC_DEFINE(HAVE_IOPS_PERMISSION_IDMAP, 1,
43d411c1d6SMartin Matuska		   [iops->permission() takes struct mnt_idmap*])
44d411c1d6SMartin Matuska	],[
45*7a7741afSMartin Matuska		AC_MSG_RESULT(no)
46*7a7741afSMartin Matuska
47716fd348SMartin Matuska		AC_MSG_CHECKING([whether iops->permission() takes struct user_namespace*])
48716fd348SMartin Matuska		ZFS_LINUX_TEST_RESULT([permission_userns], [
49716fd348SMartin Matuska			AC_MSG_RESULT(yes)
50716fd348SMartin Matuska			AC_DEFINE(HAVE_IOPS_PERMISSION_USERNS, 1,
51716fd348SMartin Matuska			   [iops->permission() takes struct user_namespace*])
52716fd348SMartin Matuska		],[
53716fd348SMartin Matuska			AC_MSG_RESULT(no)
54716fd348SMartin Matuska		])
55716fd348SMartin Matuska	])
56d411c1d6SMartin Matuska])
57