linux-symlink-handling-avoid-crash-20070418
[openafs.git] / src / cf / linux-test4.m4
index 3002d93..c8659fb 100644 (file)
@@ -6,6 +6,7 @@ AC_DEFUN([LINUX_EXPORTS_TASKLIST_LOCK], [
 #include <linux/sched.h>],
 [
 extern rwlock_t tasklist_lock __attribute__((weak)); 
+read_lock(&tasklist_lock);
 ],
       ac_cv_linux_exports_tasklist_lock=yes,
       ac_cv_linux_exports_tasklist_lock=no)])
@@ -643,6 +644,22 @@ struct nameidata _nameidata;
   AC_MSG_RESULT($ac_cv_linux_func_i_permission_takes_nameidata)])
 
 
+AC_DEFUN([LINUX_IOP_I_PUT_LINK_TAKES_COOKIE], [
+  AC_MSG_CHECKING([whether inode_operations.put_link takes an opaque cookie])
+  AC_CACHE_VAL([ac_cv_linux_func_i_put_link_takes_cookie], [
+    AC_TRY_KBUILD(
+[#include <linux/fs.h>
+#include <linux/namei.h>],
+[struct inode _inode;
+struct dentry _dentry;
+struct nameidata _nameidata;
+void *cookie;
+(void)_inode.i_op->put_link(&_dentry, &_nameidata, cookie);],
+      ac_cv_linux_func_i_put_link_takes_cookie=yes,
+      ac_cv_linux_func_i_put_link_takes_cookie=no)])
+  AC_MSG_RESULT($ac_cv_linux_func_i_put_link_takes_cookie)])
+
+
 AC_DEFUN([LINUX_DOP_D_REVALIDATE_TAKES_NAMEIDATA], [
   AC_MSG_CHECKING([whether dentry_operations.d_revalidate takes a nameidata])
   AC_CACHE_VAL([ac_cv_linux_func_d_revalidate_takes_nameidata], [