From f40f50d3bb33b52dfd550ca80be7daaddad21883 Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Mon, 2 Oct 2006 02:17:25 -0700 Subject: [PATCH] [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 --- kernel/pid.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/kernel/pid.c b/kernel/pid.c index 89107b7481..e4779bbb20 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; -- 2.39.5