From: Derrick Brashear Date: Sun, 12 Oct 2008 19:44:46 +0000 (+0000) Subject: STABLE14-linux-proc-walk-locking-20081012 X-Git-Tag: openafs-stable-1_4_8pre3~13 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=dd1cd28300bde9c160264bdaf2e6bbd014d6b586;p=packages%2Fo%2Fopenafs.git STABLE14-linux-proc-walk-locking-20081012 LICENSE IPL10 FIXES 116603 sort out rcu locking versus tasklist lock. if this fails we probably have to disable walking entirely (cherry picked from commit 24ce8010cd414c8c573f2b035d186a2418900546) --- diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index 11ec5f077..6018194c1 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -842,16 +842,16 @@ afs_osi_TraverseProcTable() #if !defined(LINUX_KEYRING_SUPPORT) struct task_struct *p; -#ifdef EXPORTED_TASKLIST_LOCK +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) && defined(EXPORTED_TASKLIST_LOCK) if (&tasklist_lock) - read_lock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -#ifdef EXPORTED_TASKLIST_LOCK + read_lock(&tasklist_lock); +#endif /* EXPORTED_TASKLIST_LOCK */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) && defined(EXPORTED_TASKLIST_LOCK) else -#endif +#endif /* EXPORTED_TASKLIST_LOCK && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) */ rcu_read_lock(); -#endif +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) */ #ifdef DEFINED_FOR_EACH_PROCESS for_each_process(p) if (p->pid) { @@ -876,16 +876,16 @@ afs_osi_TraverseProcTable() afs_GCPAGs_perproc_func(p); } #endif -#ifdef EXPORTED_TASKLIST_LOCK +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) && defined(EXPORTED_TASKLIST_LOCK) if (&tasklist_lock) - read_unlock(&tasklist_lock); -#endif -#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) -#ifdef EXPORTED_TASKLIST_LOCK + read_unlock(&tasklist_lock); +#endif /* EXPORTED_TASKLIST_LOCK */ +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) +#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) && defined(EXPORTED_TASKLIST_LOCK) else -#endif +#endif /* EXPORTED_TASKLIST_LOCK && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18) */ rcu_read_unlock(); -#endif +#endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) */ #endif } #endif