Skip to content

Commit

Permalink
proc: don't detour through seq->private to get the inode
Browse files Browse the repository at this point in the history
Signed-off-by: Christoph Hellwig <[email protected]>
  • Loading branch information
Christoph Hellwig committed May 16, 2018
1 parent 76f668b commit 04015e3
Showing 1 changed file with 6 additions and 14 deletions.
20 changes: 6 additions & 14 deletions fs/proc/array.c
Original file line number Diff line number Diff line change
Expand Up @@ -677,20 +677,22 @@ get_children_pid(struct inode *inode, struct pid *pid_prev, loff_t pos)

static int children_seq_show(struct seq_file *seq, void *v)
{
seq_printf(seq, "%d ", pid_nr_ns(v, proc_pid_ns(seq->private)));
struct inode *inode = file_inode(seq->file);

seq_printf(seq, "%d ", pid_nr_ns(v, proc_pid_ns(inode)));
return 0;
}

static void *children_seq_start(struct seq_file *seq, loff_t *pos)
{
return get_children_pid(seq->private, NULL, *pos);
return get_children_pid(file_inode(seq->file), NULL, *pos);
}

static void *children_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
struct pid *pid;

pid = get_children_pid(seq->private, v, *pos + 1);
pid = get_children_pid(file_inode(seq->file), v, *pos + 1);
put_pid(v);

++*pos;
Expand All @@ -711,17 +713,7 @@ static const struct seq_operations children_seq_ops = {

static int children_seq_open(struct inode *inode, struct file *file)
{
struct seq_file *m;
int ret;

ret = seq_open(file, &children_seq_ops);
if (ret)
return ret;

m = file->private_data;
m->private = inode;

return ret;
return seq_open(file, &children_seq_ops);
}

const struct file_operations proc_tid_children_operations = {
Expand Down

0 comments on commit 04015e3

Please sign in to comment.