mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-25 05:04:09 +08:00
[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 <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>
This commit is contained in:
parent
3fbc964864
commit
f40f50d3bb
13
kernel/pid.c
13
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;
|
||||
|
Loading…
Reference in New Issue
Block a user