]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
STABLE14-linux-keytype-exports-20080130
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Wed, 30 Jan 2008 17:30:55 +0000 (17:30 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 30 Jan 2008 17:30:55 +0000 (17:30 +0000)
LICENSE IPL10

try to work even if key_type_keyring isn't exported

(cherry picked from commit 9751c68faaff4ab5e4fae7aaad082073ca4daebf)

acinclude.m4
src/afs/LINUX/osi_groups.c
src/cf/linux-test4.m4

index 28fdb69c903f2757692fcc8f1f853b10e7ef6616..1cd266d68cabcde8068bc46791c6057c66690f1d 100644 (file)
@@ -592,8 +592,8 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                   [LINUX_BUILD_VNODE_FROM_INODE(${srcdir}/src/config,src/afs/LINUX,${srcdir}/src/afs/LINUX)]
                 )
 
-                LINUX_KERNEL_COMPILE_WORKS
                  LINUX_KBUILD_USES_EXTRA_CFLAGS
+                LINUX_KERNEL_COMPILE_WORKS
                  LINUX_HAVE_CURRENT_KERNEL_TIME
                  LINUX_KMEM_CACHE_INIT
                 LINUX_HAVE_KMEM_CACHE_T
@@ -659,6 +659,7 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_REFRIGERATOR
                 LINUX_LINUX_KEYRING_SUPPORT
                 LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK
+                LINUX_EXPORTS_KEY_TYPE_KEYRING
                 LINUX_DO_SYNC_READ
                 LINUX_GENERIC_FILE_AIO_READ
                 LINUX_INIT_WORK_HAS_DATA
@@ -1158,7 +1159,7 @@ AC_HEADER_DIRENT
 AC_CHECK_HEADERS(stdlib.h string.h unistd.h fcntl.h sys/time.h sys/file.h)
 AC_CHECK_HEADERS(netinet/in.h netdb.h sys/fcntl.h sys/mnttab.h sys/mntent.h)
 AC_CHECK_HEADERS(mntent.h sys/vfs.h sys/param.h sys/fs_types.h sys/fstyp.h)
-AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h)
+AC_CHECK_HEADERS(sys/mount.h strings.h termios.h signal.h poll.h)
 AC_CHECK_HEADERS(windows.h malloc.h winsock2.h direct.h io.h sys/user.h)
 AC_CHECK_HEADERS(security/pam_modules.h siad.h usersec.h ucontext.h regex.h)
 
index c0d82702792ceb47da3d2aa87de3a6138dffb5d1..d2a763de8c1d44f96432c7ec65c277df7329b984 100644 (file)
@@ -222,7 +222,11 @@ __setpag(cred_t **cr, afs_uint32 pagvalue, afs_uint32 *newpag,
 }
 
 #ifdef LINUX_KEYRING_SUPPORT
+#ifdef EXPORTS_KEY_TYPE_KEYRING
+static struct key_type *__key_type_keyring = &key_type_keyring;
+#else
 static struct key_type *__key_type_keyring;
+#endif
 
 static int
 install_session_keyring(struct task_struct *task, struct key *keyring)
@@ -623,6 +627,7 @@ extern rwlock_t tasklist_lock __attribute__((weak));
 
 void osi_keyring_init(void)
 {
+#ifndef EXPORTS_KEY_TYPE_KEYRING
     struct task_struct *p;
 #ifdef EXPORTED_TASKLIST_LOCK
     if (&tasklist_lock)
@@ -646,6 +651,7 @@ void osi_keyring_init(void)
     else
 #endif
       rcu_read_unlock();
+#endif
 #endif
 
     register_key_type(&key_type_afs_pag);
index 3f1937c1ff7fd998660b47abe8ef35fb7dd9cfdc..eeb194f0e0910fad9ca4102399f130a155adc5f7 100644 (file)
@@ -758,6 +758,30 @@ request_key(NULL, NULL, NULL);
     AC_DEFINE([LINUX_KEYRING_SUPPORT], 1, [define if your kernel has keyring support])
   fi])
 
+
+AC_DEFUN([LINUX_EXPORTS_KEY_TYPE_KEYRING], [
+  AC_MSG_CHECKING([for exported key_type_keyring])
+  AC_CACHE_VAL([ac_cv_linux_exports_key_type_keyring], [
+    AC_TRY_KBUILD(
+[
+#include <linux/kernel.h>
+#include <linux/rwsem.h>
+#ifdef KEY_TYPE_H_EXISTS
+#include <linux/key-type.h>
+#endif
+#include <linux/key.h>
+],
+[
+printk("%x\n", key_type_keyring);
+],
+      ac_cv_linux_exports_key_type_keyring=yes,
+      ac_cv_linux_exports_key_type_keyring=no)])
+  AC_MSG_RESULT($ac_cv_linux_exports_key_type_keyring)
+  if test "x$ac_cv_linux_exports_key_type_keyring" = "xyes"; then
+    AC_DEFINE([EXPORTS_KEY_TYPE_KEYRING], 1, [define if key_type_keyring is exported])
+  fi])
+
+
 AC_DEFUN([LINUX_KEY_ALLOC_NEEDS_STRUCT_TASK], [
   AC_MSG_CHECKING([if key_alloc() takes a struct task *])
   AC_CACHE_VAL([ac_cv_key_alloc_needs_struct_task], [