From: Russ Allbery Date: Sat, 30 Sep 2006 07:36:21 +0000 (+0000) Subject: * Apply additional upstream patch for AMD64 2.6.18 kernel module build X-Git-Tag: debian/1.4.2.fc4-2 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=5676a6b9a69abdb04f72c1afbd4c19ade85c7be0;p=packages%2Fo%2Fopenafs.git * Apply additional upstream patch for AMD64 2.6.18 kernel module build issues. (Closes: #389729) --- diff --git a/debian/changelog b/debian/changelog index e5d081e12..6bdf6ffbe 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +openafs (1.4.2~fc4-2) unstable; urgency=low + + * Apply additional upstream patch for AMD64 2.6.18 kernel module build + issues. (Closes: #389729) + + -- Russ Allbery Sat, 30 Sep 2006 00:34:33 -0700 + openafs (1.4.2~fc4-1) unstable; urgency=low * New upstream release candidate. diff --git a/src/afs/LINUX/osi_probe.c b/src/afs/LINUX/osi_probe.c index 3b30fdd61..20acb39e1 100644 --- a/src/afs/LINUX/osi_probe.c +++ b/src/afs/LINUX/osi_probe.c @@ -245,6 +245,7 @@ extern asmlinkage long sys_exit (int) __attribute__((weak)); extern asmlinkage long sys_open (const char *, int, int) __attribute__((weak)); #endif extern asmlinkage long sys_ioctl(unsigned int, unsigned int, unsigned long) __attribute__((weak)); +extern rwlock_t tasklist_lock __attribute__((weak)); /* Structures used to control probing. We put all the details of which diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index dc31c18da..2d052bc36 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -11,7 +11,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/afs/afs_osi.c,v 1.48.2.7 2006/05/22 19:08:45 shadow Exp $"); + ("$Header: /cvs/openafs/src/afs/afs_osi.c,v 1.48.2.8 2006/09/22 11:20:34 shadow Exp $"); #include "afs/sysincludes.h" /* Standard vendor system headers */ #include "afsincludes.h" /* Afs-based standard headers */ @@ -812,6 +812,11 @@ afs_osi_TraverseProcTable() struct task_struct *p; if (&tasklist_lock) read_lock(&tasklist_lock); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + else + rcu_read_lock(); +#endif + #ifdef DEFINED_FOR_EACH_PROCESS for_each_process(p) if (p->pid) { #ifdef STRUCT_TASK_STRUCT_HAS_EXIT_STATE @@ -837,6 +842,10 @@ afs_osi_TraverseProcTable() #endif if (&tasklist_lock) read_unlock(&tasklist_lock); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + else + rcu_read_unlock(); +#endif } #endif diff --git a/src/rx/LINUX/rx_knet.c b/src/rx/LINUX/rx_knet.c index 0749567f6..c81c47a05 100644 --- a/src/rx/LINUX/rx_knet.c +++ b/src/rx/LINUX/rx_knet.c @@ -16,7 +16,7 @@ #include "afs/param.h" RCSID - ("$Header: /cvs/openafs/src/rx/LINUX/rx_knet.c,v 1.23.2.9 2006/03/02 06:41:23 shadow Exp $"); + ("$Header: /cvs/openafs/src/rx/LINUX/rx_knet.c,v 1.23.2.10 2006/09/22 11:20:35 shadow Exp $"); #include #ifdef AFS_LINUX22_ENV @@ -209,9 +209,17 @@ osi_StopListener(void) if (&tasklist_lock) read_lock(&tasklist_lock); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + else + rcu_read_lock(); +#endif listener = find_task_by_pid(rxk_ListenerPid); if (&tasklist_lock) read_unlock(&tasklist_lock); +#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,16) + else + rcu_read_unlock(); +#endif while (rxk_ListenerPid) { flush_signals(listener); force_sig(SIGKILL, listener);