]> git.michaelhowe.org Git - packages/o/openafs.git/commitdiff
hold tasklist_lock in the right place. doesn't yet address versions
authorDerrick Brashear <shadow@dementia.org>
Wed, 28 Aug 2002 04:27:08 +0000 (04:27 +0000)
committerGarry Zacheiss <zacheiss@mit.edu>
Wed, 28 Aug 2002 04:27:08 +0000 (04:27 +0000)
which don't export it.

(cherry picked from commit 38025e06508a7a83247ca4f8957fb8e5f32dec78)

src/afs/afs_osi.c

index c654c7bdf09f4b4b835148073bfb29668dff7628..023be0926d6e150c82d7d86c338819e6d0feda6e 100644 (file)
@@ -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;