From: Eric W. Biederman Date: Mon, 2 Oct 2006 09:17:25 +0000 (-0700) Subject: [PATCH] Use struct pspace in next_pidmap and find_ge_pid X-Git-Tag: v2.6.19-rc1~465 X-Git-Url: http://ftp.safe.ca/?p=safe%2Fjmp%2Flinux-2.6;a=commitdiff_plain;h=f40f50d3bb33b52dfd550ca80be7daaddad21883 [PATCH] Use struct pspace in next_pidmap and find_ge_pid This updates my proc: readdir race fix (take 3) patch to account for the changes made by: Sukadev Bhattiprolu to introduce struct pspace. Signed-off-by: Eric W. Biederman Cc: KAMEZAWA Hiroyuki Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/kernel/pid.c b/kernel/pid.c index 89107b7..e4779bb 100644 --- a/kernel/pid.c +++ b/kernel/pid.c @@ -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;