From: Derrick Brashear Date: Wed, 28 Aug 2002 04:27:08 +0000 (+0000) Subject: hold tasklist_lock in the right place. doesn't yet address versions X-Git-Tag: openafs-stable-1_2_7~33 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=6309cc42ee336ebb93e4023b680100ac1ee50348;p=packages%2Fo%2Fopenafs.git hold tasklist_lock in the right place. doesn't yet address versions which don't export it. (cherry picked from commit 38025e06508a7a83247ca4f8957fb8e5f32dec78) --- diff --git a/src/afs/afs_osi.c b/src/afs/afs_osi.c index c654c7bdf..023be0926 100644 --- a/src/afs/afs_osi.c +++ b/src/afs/afs_osi.c @@ -779,15 +779,14 @@ void afs_osi_TraverseProcTable() void afs_osi_TraverseProcTable() { struct task_struct *p; + + read_lock(&tasklist_lock); for_each_task(p) if (p->pid) { if (p->state & TASK_ZOMBIE) continue; -#if 0 - if (p->flags & ) - continue; -#endif afs_GCPAGs_perproc_func(p); } + read_unlock(&tasklist_lock); } #endif @@ -986,13 +985,11 @@ const struct AFS_UCRED *afs_osi_proc2cred(AFS_PROC *pr) (pr->state == TASK_INTERRUPTIBLE) || (pr->state == TASK_UNINTERRUPTIBLE) || (pr->state == TASK_STOPPED)) { - read_lock(&tasklist_lock); - cr.cr_ref=1; - cr.cr_uid=pr->uid; - cr.cr_ngroups=pr->ngroups; - memcpy(cr.cr_groups, pr->groups, NGROUPS * sizeof(gid_t)); - read_unlock(&tasklist_lock); - rv = &cr; + cr.cr_ref=1; + cr.cr_uid=pr->uid; + cr.cr_ngroups=pr->ngroups; + memcpy(cr.cr_groups, pr->groups, NGROUPS * sizeof(gid_t)); + rv = &cr; } return rv;