Linux compat 2.6.39: security_inode_init_security()
authorBrian Behlendorf <behlendorf1@llnl.gov>
Thu, 19 May 2011 19:47:32 +0000 (12:47 -0700)
committerBrian Behlendorf <behlendorf1@llnl.gov>
Fri, 1 Jul 2011 19:40:08 +0000 (12:40 -0700)
The security_inode_init_security() function now takes an additional
qstr argument which must be passed in from the dentry if available.
Passing a NULL is safe when no qstr is available the relevant
security checks will just be skipped.

Closes #246
Closes #217
Closes #187

61 files changed:
Makefile.in
cmd/Makefile.in
cmd/mount_zfs/Makefile.in
cmd/sas_switch_id/Makefile.in
cmd/zdb/Makefile.in
cmd/zfs/Makefile.in
cmd/zinject/Makefile.in
cmd/zpios/Makefile.in
cmd/zpool/Makefile.in
cmd/zpool_id/Makefile.in
cmd/zpool_layout/Makefile.in
cmd/ztest/Makefile.in
cmd/zvol_id/Makefile.in
config/kernel-security-inode-init.m4 [new file with mode: 0644]
config/kernel.m4
configure
dracut/90zfs/Makefile.in
dracut/Makefile.in
etc/Makefile.in
etc/init.d/Makefile.in
etc/udev/Makefile.in
etc/udev/rules.d/Makefile.in
etc/zfs/Makefile.in
include/Makefile.in
include/linux/Makefile.in
include/linux/xattr_compat.h
include/sys/Makefile.in
include/sys/fm/Makefile.in
include/sys/fm/fs/Makefile.in
include/sys/fs/Makefile.in
include/sys/zpl.h
lib/Makefile.in
lib/libavl/Makefile.in
lib/libefi/Makefile.in
lib/libnvpair/Makefile.in
lib/libspl/Makefile.in
lib/libspl/asm-generic/Makefile.in
lib/libspl/asm-i386/Makefile.in
lib/libspl/asm-x86_64/Makefile.in
lib/libspl/include/Makefile.in
lib/libspl/include/ia32/Makefile.in
lib/libspl/include/ia32/sys/Makefile.in
lib/libspl/include/rpc/Makefile.in
lib/libspl/include/sys/Makefile.in
lib/libspl/include/sys/dktp/Makefile.in
lib/libspl/include/sys/sysevent/Makefile.in
lib/libspl/include/util/Makefile.in
lib/libunicode/Makefile.in
lib/libuutil/Makefile.in
lib/libzfs/Makefile.in
lib/libzpool/Makefile.in
man/Makefile.in
man/man8/Makefile.in
module/zfs/zfs_znode.c
module/zfs/zpl_xattr.c
scripts/Makefile.in
scripts/zpios-profile/Makefile.in
scripts/zpios-test/Makefile.in
scripts/zpool-config/Makefile.in
scripts/zpool-layout/Makefile.in
zfs_config.h.in

index 903bbe2..830c43c 100644 (file)
@@ -79,6 +79,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 7f00d6d..988fefc 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 15b4ce8..7081fe7 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 07f6029..e32e797 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 7869a05..18502eb 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 9f98bdf..1a5f4d3 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 325c445..dffcd2e 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 0ff6084..29e63a8 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 3056e48..1c1481c 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 9ce95d5..eed2156 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index c09c41d..3d4f363 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index d077e1a..e3718e5 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index c39cfce..5857046 100644 (file)
@@ -67,6 +67,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
diff --git a/config/kernel-security-inode-init.m4 b/config/kernel-security-inode-init.m4
new file mode 100644 (file)
index 0000000..a26de9f
--- /dev/null
@@ -0,0 +1,24 @@
+dnl #
+dnl # 2.6.39 API change
+dnl # The security_inode_init_security() function now takes an additional
+dnl # qstr argument which must be passed in from the dentry if available.
+dnl # Passing a NULL is safe when no qstr is available the relevant
+dnl # security checks will just be skipped.
+dnl #
+AC_DEFUN([ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY], [
+       AC_MSG_CHECKING([whether security_inode_init_security wants 6 args])
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+       ZFS_LINUX_TRY_COMPILE([
+               #include <linux/security.h>
+       ],[
+               security_inode_init_security(NULL,NULL,NULL,NULL,NULL,NULL);
+       ],[
+               AC_MSG_RESULT(yes)
+               AC_DEFINE(HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY, 1,
+                         [security_inode_init_security wants 6 args])
+       ],[
+               AC_MSG_RESULT(no)
+       ])
+       EXTRA_KCFLAGS="$tmp_flags"
+])
index 67f6bc5..8c4b06a 100644 (file)
@@ -38,6 +38,7 @@ AC_DEFUN([ZFS_AC_CONFIG_KERNEL], [
        ZFS_AC_KERNEL_D_OBTAIN_ALIAS
        ZFS_AC_KERNEL_CHECK_DISK_SIZE_CHANGE
        ZFS_AC_KERNEL_TRUNCATE_SETSIZE
+       ZFS_AC_KERNEL_6ARGS_SECURITY_INODE_INIT_SECURITY
 
        if test "$LINUX_OBJ" != "$LINUX"; then
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
index 1efd9aa..49bfb63 100755 (executable)
--- a/configure
+++ b/configure
@@ -14567,6 +14567,74 @@ _ACEOF
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants 6 args" >&5
+$as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/security.h>
+
+int
+main (void)
+{
+
+               security_inode_init_security(NULL,NULL,NULL,NULL,NULL,NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+       EXTRA_KCFLAGS="$tmp_flags"
+
+
        if test "$LINUX_OBJ" != "$LINUX"; then
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
        fi
@@ -18733,6 +18801,74 @@ _ACEOF
 
 
 
+       { $as_echo "$as_me:$LINENO: checking whether security_inode_init_security wants 6 args" >&5
+$as_echo_n "checking whether security_inode_init_security wants 6 args... " >&6; }
+       tmp_flags="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="-Werror"
+
+
+cat confdefs.h - <<_ACEOF >conftest.c
+/* confdefs.h.  */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h.  */
+
+
+               #include <linux/security.h>
+
+int
+main (void)
+{
+
+               security_inode_init_security(NULL,NULL,NULL,NULL,NULL,NULL);
+
+  ;
+  return 0;
+}
+
+_ACEOF
+
+
+       rm -Rf build && mkdir -p build
+       echo "obj-m := conftest.o" >build/Makefile
+       if { ac_try='cp conftest.c build && make modules -C $LINUX_OBJ EXTRA_CFLAGS="-Werror-implicit-function-declaration $EXTRA_KCFLAGS" $ARCH_UM M=$PWD/build'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; } >/dev/null && { ac_try='test -s build/conftest.o'
+  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+  (eval $ac_try) 2>&5
+  ac_status=$?
+  $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
+  (exit $ac_status); }; }; then
+
+               { $as_echo "$as_me:$LINENO: result: yes" >&5
+$as_echo "yes" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY 1
+_ACEOF
+
+
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+               { $as_echo "$as_me:$LINENO: result: no" >&5
+$as_echo "no" >&6; }
+
+
+
+fi
+
+       rm -Rf build
+
+
+       EXTRA_KCFLAGS="$tmp_flags"
+
+
        if test "$LINUX_OBJ" != "$LINUX"; then
                KERNELMAKE_PARAMS="$KERNELMAKE_PARAMS O=$LINUX_OBJ"
        fi
index 30dd963..a88f439 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index b8b2310..cf9446c 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 9baf283..74cb03c 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 3894678..9475c9c 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 356bc4c..c2c2ec1 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 189eaca..67145b0 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 4590eb9..62bac1b 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index be5a182..d1533b7 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index e6c5ebf..2696131 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 9878aab..84d8fde 100644 (file)
@@ -84,4 +84,12 @@ fn(struct inode *ip, const char *name, const void *buffer,           \
 }
 #endif /* HAVE_DENTRY_XATTR_SET */
 
+#ifdef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY
+#define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len)  \
+       security_inode_init_security(ip, dip, qstr, nm, val, len)
+#else
+#define zpl_security_inode_init_security(ip, dip, qstr, nm, val, len)  \
+       security_inode_init_security(ip, dip, nm, val, len)
+#endif /* HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY */
+
 #endif /* _ZFS_XATTR_H */
index 5da0da1..85f73af 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 09c882b..00f3f9f 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index e518eda..3aa7c3e 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 6152ac4..bf7f57e 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 906b5a7..2770e59 100644 (file)
@@ -60,7 +60,8 @@ extern struct file_system_type zpl_fs_type;
 
 /* zpl_xattr.c */
 extern ssize_t zpl_xattr_list(struct dentry *dentry, char *buf, size_t size);
-extern int zpl_xattr_security_init(struct inode *ip, struct inode *dip);
+extern int zpl_xattr_security_init(struct inode *ip, struct inode *dip,
+    const struct qstr *qstr);
 
 extern xattr_handler_t *zpl_xattr_handlers[];
 
index 0816433..4184760 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 13056cb..9ab160e 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 55db140..8116a23 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index a076db5..318dcbd 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 5b5dfc9..09dd524 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 103d6fc..7e03433 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index b0d41db..85bebc9 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index c1ac29b..b6b9bed 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index d2d6a77..b2de0ad 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 5d4a251..d68fa7b 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 41e4043..30b81de 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 78808fe..3b1270e 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index fb8b43f..ccfefaa 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index a5dcc84..9eed96c 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index a57bd9c..83ce2b2 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 7828278..1339ebc 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index b860d0b..48a7100 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index ab8eaab..bd22487 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 7806b7b..d73e8eb 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index b38a86d..0245bb1 100644 (file)
@@ -66,6 +66,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 45532d2..781ef47 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 7d9feab..2935d88 100644 (file)
@@ -64,6 +64,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 17a5821..076161a 100644 (file)
@@ -327,7 +327,7 @@ zfs_inode_set_ops(zfs_sb_t *zsb, struct inode *ip)
 static znode_t *
 zfs_znode_alloc(zfs_sb_t *zsb, dmu_buf_t *db, int blksz,
     dmu_object_type_t obj_type, uint64_t obj, sa_handle_t *hdl,
-    struct dentry *dentry)
+    struct dentry *dentry, struct inode *dip)
 {
        znode_t *zp;
        struct inode *ip;
@@ -383,8 +383,12 @@ zfs_znode_alloc(zfs_sb_t *zsb, dmu_buf_t *db, int blksz,
        if (insert_inode_locked(ip))
                goto error;
 
-       if (dentry)
+       if (dentry) {
+               if (zpl_xattr_security_init(ip, dip, &dentry->d_name))
+                       goto error;
+
                d_instantiate(dentry, ip);
+       }
 
        mutex_enter(&zsb->z_znodes_lock);
        list_insert_tail(&zsb->z_all_znodes, zp);
@@ -681,11 +685,9 @@ zfs_mknode(znode_t *dzp, vattr_t *vap, dmu_tx_t *tx, cred_t *cr,
 
        if (!(flag & IS_ROOT_NODE)) {
                *zpp = zfs_znode_alloc(zsb, db, 0, obj_type, obj, sa_hdl,
-                   vap->va_dentry);
+                   vap->va_dentry, ZTOI(dzp));
                ASSERT(*zpp != NULL);
                ASSERT(dzp != NULL);
-               err = zpl_xattr_security_init(ZTOI(*zpp), ZTOI(dzp));
-               ASSERT3S(err, ==, 0);
        } else {
                /*
                 * If we are creating the root node, the "parent" we
@@ -894,7 +896,7 @@ again:
         * bonus buffer.
         */
        zp = zfs_znode_alloc(zsb, db, doi.doi_data_block_size,
-           doi.doi_bonus_type, obj_num, NULL, NULL);
+           doi.doi_bonus_type, obj_num, NULL, NULL, NULL);
        if (zp == NULL) {
                err = ENOENT;
        } else {
index bb93414..f274407 100644 (file)
@@ -404,14 +404,16 @@ __zpl_xattr_security_set(struct inode *ip, const char *name,
 ZPL_XATTR_SET_WRAPPER(zpl_xattr_security_set);
 
 int
-zpl_xattr_security_init(struct inode *ip, struct inode *dip)
+zpl_xattr_security_init(struct inode *ip, struct inode *dip,
+    const struct qstr *qstr)
 {
         int error;
         size_t len;
         void *value;
         char *name;
 
-        error = security_inode_init_security(ip, dip, &name, &value, &len);
+        error = zpl_security_inode_init_security(ip, dip, qstr,
+           &name, &value, &len);
         if (error) {
                 if (error == -EOPNOTSUPP)
                         return 0;
index 521e57e..1770e23 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 4a78a6f..725ba10 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 14aadb3..4394d57 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 99353cf..4b6f7b8 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 9628cc8..8cff172 100644 (file)
@@ -65,6 +65,7 @@ am__aclocal_m4_deps =  \
        $(top_srcdir)/config/kernel-open-bdev-exclusive.m4 \
        $(top_srcdir)/config/kernel-rq-for-each_segment.m4 \
        $(top_srcdir)/config/kernel-rq-is_sync.m4 \
+       $(top_srcdir)/config/kernel-security-inode-init.m4 \
        $(top_srcdir)/config/kernel-truncate-setsize.m4 \
        $(top_srcdir)/config/kernel-xattr-handler.m4 \
        $(top_srcdir)/config/kernel.m4 \
index 0d3028f..ee2f794 100644 (file)
@@ -9,6 +9,9 @@
 /* fops->fsync() want 2 args */
 #undef HAVE_2ARGS_FSYNC
 
+/* security_inode_init_security wants 6 args */
+#undef HAVE_6ARGS_SECURITY_INODE_INIT_SECURITY
+
 /* struct block_device_operations use bdevs */
 #undef HAVE_BDEV_BLOCK_DEVICE_OPERATIONS