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