struct tgid_iter {
unsigned int tgid;
struct task_struct *task;
+ struct pid_namespace *pid_ns;
};
-static struct tgid_iter next_tgid(struct pid_namespace *ns, struct tgid_iter iter)
+
+static struct tgid_iter next_tgid(struct tgid_iter iter)
{
struct pid *pid;
rcu_read_lock();
retry:
iter.task = NULL;
- pid = find_ge_pid(iter.tgid, ns);
+ pid = find_ge_pid(iter.tgid, iter.pid_ns);
if (pid) {
- iter.tgid = pid_nr_ns(pid, ns);
+ iter.tgid = pid_nr_ns(pid, iter.pid_ns);
iter.task = pid_task(pid, PIDTYPE_TGID);
if (!iter.task) {
iter.tgid += 1;
{
struct tgid_iter iter;
struct proc_fs_info *fs_info = proc_sb_info(file_inode(file)->i_sb);
- struct pid_namespace *ns = proc_pid_ns(file_inode(file)->i_sb);
+ struct pid_namespace *pid_ns = proc_pid_ns(file_inode(file)->i_sb);
loff_t pos = ctx->pos;
if (pos >= PID_MAX_LIMIT + TGID_OFFSET)
}
iter.tgid = pos - TGID_OFFSET;
iter.task = NULL;
- for (iter = next_tgid(ns, iter);
+ iter.pid_ns = pid_ns;
+ for (iter = next_tgid(iter);
iter.task;
- iter.tgid += 1, iter = next_tgid(ns, iter)) {
+ iter.tgid += 1, iter = next_tgid(iter)) {
char name[10 + 1];
unsigned int len;