Eliminate runtime function pointer mods in autotools checks
[zfs.git] / config / kernel-create-nameidata.m4
index 100f077..9aad46f 100644 (file)
@@ -5,18 +5,21 @@ AC_DEFUN([ZFS_AC_KERNEL_CREATE_NAMEIDATA], [
        AC_MSG_CHECKING([whether iops->create() takes struct nameidata])
        ZFS_LINUX_TRY_COMPILE([
                #include <linux/fs.h>
-       ],[
+
                #ifdef HAVE_MKDIR_UMODE_T
-               int (*inode_create) (struct inode *,struct dentry *,
-                                    umode_t, struct nameidata *) = NULL;
+               int inode_create(struct inode *inode ,struct dentry *dentry,
+                   umode_t umode, struct nameidata *nidata) { return 0; }
                #else
-               int (*inode_create) (struct inode *,struct dentry *,
-                                    int, struct nameidata *) = NULL;
+               int inode_create(struct inode *inode,struct dentry *dentry,
+                   int umode, struct nameidata * nidata) { return 0; }
                #endif
-               struct inode_operations iops __attribute__ ((unused)) = {
+
+               static const struct inode_operations
+                   iops __attribute__ ((unused)) = {
                        .create         = inode_create,
                };
        ],[
+       ],[
                AC_MSG_RESULT(yes)
                AC_DEFINE(HAVE_CREATE_NAMEIDATA, 1,
                          [iops->create() operation takes nameidata])