]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
DEVEL15-linux-keytype-exports-20080130
authorSimon Wilkinson <sxw@inf.ed.ac.uk>
Wed, 30 Jan 2008 17:30:38 +0000 (17:30 +0000)
committerDerrick Brashear <shadow@dementia.org>
Wed, 30 Jan 2008 17:30:38 +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 744db2ca54311395cb599d8127908bb8e9194324..64699d632b4d74b5d1699bebdd04f53f82eb472d 100644 (file)
@@ -607,8 +607,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
@@ -676,6 +676,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
@@ -1202,7 +1203,7 @@ AC_HEADER_DIRENT
 AC_CHECK_HEADERS(stdlib.h string.h unistd.h poll.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 values.h)
 
index ed7516c673fd7334b06436738ad135a9ef9bed7b..cecfc9b99acf7d88d9f666271dc8dc0f02da7d82 100644 (file)
@@ -223,7 +223,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 126f75fbe9a1cc8a775420b6435c9c82abacb673..0781a9d148aca28149536d98ed02085985edc67e 100644 (file)
@@ -767,6 +767,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], [