[PATCH] Use struct pspace in next_pidmap and find_ge_pid
authorEric W. Biederman <ebiederm@xmission.com>
Mon, 2 Oct 2006 09:17:25 +0000 (02:17 -0700)
committerLinus Torvalds <torvalds@g5.osdl.org>
Mon, 2 Oct 2006 14:57:15 +0000 (07:57 -0700)
This updates my proc: readdir race fix (take 3) patch
to account for the changes made by: Sukadev Bhattiprolu <sukadev@us.ibm.com>
to introduce struct pspace.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
kernel/pid.c

index 89107b7..e4779bb 100644 (file)
@@ -149,19 +149,20 @@ static int alloc_pidmap(struct pspace *pspace)
        return -1;
 }
 
-static int next_pidmap(int last)
+static int next_pidmap(struct pspace *pspace, int last)
 {
        int offset;
-       struct pidmap *map;
+       struct pidmap *map, *end;
 
        offset = (last + 1) & BITS_PER_PAGE_MASK;
-       map = &pidmap_array[(last + 1)/BITS_PER_PAGE];
-       for (; map < &pidmap_array[PIDMAP_ENTRIES]; map++, offset = 0) {
+       map = &pspace->pidmap[(last + 1)/BITS_PER_PAGE];
+       end = &pspace->pidmap[PIDMAP_ENTRIES];
+       for (; map < end; map++, offset = 0) {
                if (unlikely(!map->page))
                        continue;
                offset = find_next_bit((map)->page, BITS_PER_PAGE, offset);
                if (offset < BITS_PER_PAGE)
-                       return mk_pid(map, offset);
+                       return mk_pid(pspace, map, offset);
        }
        return -1;
 }
@@ -338,7 +339,7 @@ struct pid *find_ge_pid(int nr)
                pid = find_pid(nr);
                if (pid)
                        break;
-               nr = next_pidmap(nr);
+               nr = next_pidmap(&init_pspace, nr);
        } while (nr > 0);
 
        return pid;