]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
linux-tasklist-lock-weak-20050129
authorChaskiel M Grundman <cg2v@andrew.cmu.edu>
Sat, 29 Jan 2005 05:46:42 +0000 (05:46 +0000)
committerDerrick Brashear <shadow@dementia.org>
Sat, 29 Jan 2005 05:46:42 +0000 (05:46 +0000)
FIXES 17424

weak binding to tasklist_lock

acinclude.m4
src/afs/afs_osi.c
src/cf/linux-test4.m4
src/rx/LINUX/rx_knet.c

index a3b453202439a55fc92b12dbb4214328139ef486..c7b1a3a81415a92380243a402eb6fe1e4dfa1bef 100644 (file)
@@ -560,7 +560,6 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 LINUX_COMPLETION_H_EXISTS
                 LINUX_DEFINES_FOR_EACH_PROCESS
                 LINUX_DEFINES_PREV_TASK
-                LINUX_EXPORTS_TASKLIST_LOCK
                 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_PAGE_LOCK
                 LINUX_FS_STRUCT_ADDRESS_SPACE_HAS_GFP_MASK
                 LINUX_FS_STRUCT_INODE_HAS_I_ALLOC_SEM
@@ -636,9 +635,6 @@ case $AFS_SYSNAME in *_linux* | *_umlinux*)
                 if test "x$ac_cv_linux_exports_sys_wait4" = "xyes" ; then
                  AC_DEFINE(EXPORTED_SYS_WAIT4, 1, [define if your linux kernel exports sys_wait4])
                 fi
-                if test "x$ac_cv_linux_exports_tasklist_lock" = "xyes" ; then
-                 AC_DEFINE(EXPORTED_TASKLIST_LOCK, 1, [define if your linux kernel exports tasklist_lock])
-                fi
                  if test "x$ac_cv_linux_exports_sys_call_table" = "xyes"; then
                   AC_DEFINE(EXPORTED_SYS_CALL_TABLE)
                  fi
index 2f28f2848e7938b31f2f530f665882c4032970e2..e03e49446ba0792acc744cd417ee25d31a5b3abf 100644 (file)
@@ -850,14 +850,13 @@ afs_osi_TraverseProcTable(void)
 #endif
 
 #if defined(AFS_LINUX22_ENV)
+extern rwlock_t tasklist_lock __attribute__((weak));
 void
 afs_osi_TraverseProcTable()
 {
     struct task_struct *p;
-
-#ifdef EXPORTED_TASKLIST_LOCK
-    read_lock(&tasklist_lock);
-#endif
+    if (&tasklist_lock)
+       read_lock(&tasklist_lock);
 #ifdef DEFINED_FOR_EACH_PROCESS
     for_each_process(p) if (p->pid) {
 #ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE
@@ -881,9 +880,8 @@ afs_osi_TraverseProcTable()
        afs_GCPAGs_perproc_func(p);
     }
 #endif
-#ifdef EXPORTED_TASKLIST_LOCK
-    read_unlock(&tasklist_lock);
-#endif
+    if (&tasklist_lock)
+       read_unlock(&tasklist_lock);
 }
 #endif
 
index 582f49012856d3997f190322d5d79070a050e670..9f30becf65b3bfbf89fe606c1d6a76383f656cd0 100644 (file)
@@ -188,23 +188,6 @@ AC_MSG_RESULT($ac_cv_linux_exports_sys_wait4)
 CPPFLAGS="$save_CPPFLAGS"])
 
 
-AC_DEFUN([LINUX_EXPORTS_TASKLIST_LOCK], [
-AC_MSG_CHECKING(for exported tasklist_lock)
-save_CPPFLAGS="$CPPFLAGS"
-CPPFLAGS="-I${LINUX_KERNEL_PATH}/include -I${LINUX_KERNEL_PATH}/include/asm/mach-${SUBARCH} -D__KERNEL__ $CPPFLAGS"
-AC_CACHE_VAL(ac_cv_linux_exports_tasklist_lock,
-[
-AC_TRY_COMPILE(
-[#include <linux/modversions.h>],
-[#ifndef __ver_tasklist_lock
-#error tasklist_lock not exported
-#endif],
-ac_cv_linux_exports_tasklist_lock=yes,
-ac_cv_linux_exports_tasklist_lock=no)])
-AC_MSG_RESULT($ac_cv_linux_exports_tasklist_lock)
-CPPFLAGS="$save_CPPFLAGS"])
-
-
 AC_DEFUN([LINUX_FS_STRUCT_INODE_HAS_I_CDEV], [
 AC_MSG_CHECKING(for i_cdev in struct inode)
 save_CPPFLAGS="$CPPFLAGS"
index dba89e9f286baa70a0980efd62c841be4ac79d62..5e9b46d77f3b3d94d4b3c6128380a1677a01fb7d 100644 (file)
@@ -194,20 +194,18 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *from, struct iovec *iov,
 
     return code;
 }
-
+extern rwlock_t tasklist_lock __attribute__((weak));
 void
 osi_StopListener(void)
 {
     struct task_struct *listener;
     extern int rxk_ListenerPid;
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
-    read_lock(&tasklist_lock);
-#endif
+    if (&tasklist_lock)
+      read_lock(&tasklist_lock);
     listener = find_task_by_pid(rxk_ListenerPid);
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,4,0)
-    read_unlock(&tasklist_lock);
-#endif
+    if (&tasklist_lock)
+       read_unlock(&tasklist_lock);
     while (rxk_ListenerPid) {
        flush_signals(listener);
        force_sig(SIGKILL, listener);