Loading fs/proc/proc_net.c +3 −3 Original line number Diff line number Diff line Loading @@ -44,7 +44,9 @@ int seq_open_net(struct inode *ino, struct file *f, put_net(net); return -ENOMEM; } #ifdef CONFIG_NET_NS p->net = net; #endif return 0; } EXPORT_SYMBOL_GPL(seq_open_net); Loading @@ -52,12 +54,10 @@ EXPORT_SYMBOL_GPL(seq_open_net); int seq_release_net(struct inode *ino, struct file *f) { struct seq_file *seq; struct seq_net_private *p; seq = f->private_data; p = seq->private; put_net(p->net); put_net(seq_file_net(seq)); seq_release_private(ino, f); return 0; } Loading include/linux/seq_file.h +7 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <linux/types.h> #include <linux/string.h> #include <linux/mutex.h> #include <net/net_namespace.h> struct seq_operations; struct file; Loading Loading @@ -64,7 +65,9 @@ extern struct list_head *seq_list_next(void *v, struct list_head *head, struct net; struct seq_net_private { #ifdef CONFIG_NET_NS struct net *net; #endif }; int seq_open_net(struct inode *, struct file *, Loading @@ -72,7 +75,11 @@ int seq_open_net(struct inode *, struct file *, int seq_release_net(struct inode *, struct file *); static inline struct net *seq_file_net(struct seq_file *seq) { #ifdef CONFIG_NET_NS return ((struct seq_net_private *)seq->private)->net; #else return &init_net; #endif } #endif Loading net/core/neighbour.c +4 −4 Original line number Diff line number Diff line Loading @@ -2145,7 +2145,7 @@ EXPORT_SYMBOL(__neigh_for_each_release); static struct neighbour *neigh_get_first(struct seq_file *seq) { struct neigh_seq_state *state = seq->private; struct net *net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; struct neighbour *n = NULL; int bucket = state->bucket; Loading Loading @@ -2186,7 +2186,7 @@ static struct neighbour *neigh_get_next(struct seq_file *seq, loff_t *pos) { struct neigh_seq_state *state = seq->private; struct net *net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; if (state->neigh_sub_iter) { Loading Loading @@ -2246,7 +2246,7 @@ static struct neighbour *neigh_get_idx(struct seq_file *seq, loff_t *pos) static struct pneigh_entry *pneigh_get_first(struct seq_file *seq) { struct neigh_seq_state *state = seq->private; struct net * net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; struct pneigh_entry *pn = NULL; int bucket = state->bucket; Loading @@ -2269,7 +2269,7 @@ static struct pneigh_entry *pneigh_get_next(struct seq_file *seq, loff_t *pos) { struct neigh_seq_state *state = seq->private; struct net * net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; pn = pn->next; Loading net/ipv4/fib_hash.c +2 −3 Original line number Diff line number Diff line Loading @@ -821,7 +821,7 @@ static struct fib_alias *fib_get_first(struct seq_file *seq) struct fib_table *main_table; struct fn_hash *table; main_table = fib_get_table(iter->p.net, RT_TABLE_MAIN); main_table = fib_get_table(seq_file_net(seq), RT_TABLE_MAIN); table = (struct fn_hash *)main_table->tb_data; iter->bucket = 0; Loading Loading @@ -959,11 +959,10 @@ static struct fib_alias *fib_get_idx(struct seq_file *seq, loff_t pos) static void *fib_seq_start(struct seq_file *seq, loff_t *pos) __acquires(fib_hash_lock) { struct fib_iter_state *iter = seq->private; void *v = NULL; read_lock(&fib_hash_lock); if (fib_get_table(iter->p.net, RT_TABLE_MAIN)) if (fib_get_table(seq_file_net(seq), RT_TABLE_MAIN)) v = *pos ? fib_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; return v; } Loading net/ipv4/fib_trie.c +6 −7 Original line number Diff line number Diff line Loading @@ -2279,9 +2279,10 @@ static const struct file_operations fib_triestat_fops = { .release = fib_triestat_seq_release, }; static struct node *fib_trie_get_idx(struct fib_trie_iter *iter, loff_t pos) static struct node *fib_trie_get_idx(struct seq_file *seq, loff_t pos) { struct net *net = iter->p.net; struct fib_trie_iter *iter = seq->private; struct net *net = seq_file_net(seq); loff_t idx = 0; unsigned int h; Loading Loading @@ -2309,16 +2310,14 @@ static struct node *fib_trie_get_idx(struct fib_trie_iter *iter, loff_t pos) static void *fib_trie_seq_start(struct seq_file *seq, loff_t *pos) __acquires(RCU) { struct fib_trie_iter *iter = seq->private; rcu_read_lock(); return fib_trie_get_idx(iter, *pos); return fib_trie_get_idx(seq, *pos); } static void *fib_trie_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct fib_trie_iter *iter = seq->private; struct net *net = iter->p.net; struct net *net = seq_file_net(seq); struct fib_table *tb = iter->tb; struct hlist_node *tb_node; unsigned int h; Loading Loading @@ -2513,7 +2512,7 @@ static void *fib_route_seq_start(struct seq_file *seq, loff_t *pos) struct fib_table *tb; rcu_read_lock(); tb = fib_get_table(iter->p.net, RT_TABLE_MAIN); tb = fib_get_table(seq_file_net(seq), RT_TABLE_MAIN); if (!tb) return NULL; Loading Loading
fs/proc/proc_net.c +3 −3 Original line number Diff line number Diff line Loading @@ -44,7 +44,9 @@ int seq_open_net(struct inode *ino, struct file *f, put_net(net); return -ENOMEM; } #ifdef CONFIG_NET_NS p->net = net; #endif return 0; } EXPORT_SYMBOL_GPL(seq_open_net); Loading @@ -52,12 +54,10 @@ EXPORT_SYMBOL_GPL(seq_open_net); int seq_release_net(struct inode *ino, struct file *f) { struct seq_file *seq; struct seq_net_private *p; seq = f->private_data; p = seq->private; put_net(p->net); put_net(seq_file_net(seq)); seq_release_private(ino, f); return 0; } Loading
include/linux/seq_file.h +7 −0 Original line number Diff line number Diff line Loading @@ -5,6 +5,7 @@ #include <linux/types.h> #include <linux/string.h> #include <linux/mutex.h> #include <net/net_namespace.h> struct seq_operations; struct file; Loading Loading @@ -64,7 +65,9 @@ extern struct list_head *seq_list_next(void *v, struct list_head *head, struct net; struct seq_net_private { #ifdef CONFIG_NET_NS struct net *net; #endif }; int seq_open_net(struct inode *, struct file *, Loading @@ -72,7 +75,11 @@ int seq_open_net(struct inode *, struct file *, int seq_release_net(struct inode *, struct file *); static inline struct net *seq_file_net(struct seq_file *seq) { #ifdef CONFIG_NET_NS return ((struct seq_net_private *)seq->private)->net; #else return &init_net; #endif } #endif Loading
net/core/neighbour.c +4 −4 Original line number Diff line number Diff line Loading @@ -2145,7 +2145,7 @@ EXPORT_SYMBOL(__neigh_for_each_release); static struct neighbour *neigh_get_first(struct seq_file *seq) { struct neigh_seq_state *state = seq->private; struct net *net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; struct neighbour *n = NULL; int bucket = state->bucket; Loading Loading @@ -2186,7 +2186,7 @@ static struct neighbour *neigh_get_next(struct seq_file *seq, loff_t *pos) { struct neigh_seq_state *state = seq->private; struct net *net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; if (state->neigh_sub_iter) { Loading Loading @@ -2246,7 +2246,7 @@ static struct neighbour *neigh_get_idx(struct seq_file *seq, loff_t *pos) static struct pneigh_entry *pneigh_get_first(struct seq_file *seq) { struct neigh_seq_state *state = seq->private; struct net * net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; struct pneigh_entry *pn = NULL; int bucket = state->bucket; Loading @@ -2269,7 +2269,7 @@ static struct pneigh_entry *pneigh_get_next(struct seq_file *seq, loff_t *pos) { struct neigh_seq_state *state = seq->private; struct net * net = state->p.net; struct net *net = seq_file_net(seq); struct neigh_table *tbl = state->tbl; pn = pn->next; Loading
net/ipv4/fib_hash.c +2 −3 Original line number Diff line number Diff line Loading @@ -821,7 +821,7 @@ static struct fib_alias *fib_get_first(struct seq_file *seq) struct fib_table *main_table; struct fn_hash *table; main_table = fib_get_table(iter->p.net, RT_TABLE_MAIN); main_table = fib_get_table(seq_file_net(seq), RT_TABLE_MAIN); table = (struct fn_hash *)main_table->tb_data; iter->bucket = 0; Loading Loading @@ -959,11 +959,10 @@ static struct fib_alias *fib_get_idx(struct seq_file *seq, loff_t pos) static void *fib_seq_start(struct seq_file *seq, loff_t *pos) __acquires(fib_hash_lock) { struct fib_iter_state *iter = seq->private; void *v = NULL; read_lock(&fib_hash_lock); if (fib_get_table(iter->p.net, RT_TABLE_MAIN)) if (fib_get_table(seq_file_net(seq), RT_TABLE_MAIN)) v = *pos ? fib_get_idx(seq, *pos - 1) : SEQ_START_TOKEN; return v; } Loading
net/ipv4/fib_trie.c +6 −7 Original line number Diff line number Diff line Loading @@ -2279,9 +2279,10 @@ static const struct file_operations fib_triestat_fops = { .release = fib_triestat_seq_release, }; static struct node *fib_trie_get_idx(struct fib_trie_iter *iter, loff_t pos) static struct node *fib_trie_get_idx(struct seq_file *seq, loff_t pos) { struct net *net = iter->p.net; struct fib_trie_iter *iter = seq->private; struct net *net = seq_file_net(seq); loff_t idx = 0; unsigned int h; Loading Loading @@ -2309,16 +2310,14 @@ static struct node *fib_trie_get_idx(struct fib_trie_iter *iter, loff_t pos) static void *fib_trie_seq_start(struct seq_file *seq, loff_t *pos) __acquires(RCU) { struct fib_trie_iter *iter = seq->private; rcu_read_lock(); return fib_trie_get_idx(iter, *pos); return fib_trie_get_idx(seq, *pos); } static void *fib_trie_seq_next(struct seq_file *seq, void *v, loff_t *pos) { struct fib_trie_iter *iter = seq->private; struct net *net = iter->p.net; struct net *net = seq_file_net(seq); struct fib_table *tb = iter->tb; struct hlist_node *tb_node; unsigned int h; Loading Loading @@ -2513,7 +2512,7 @@ static void *fib_route_seq_start(struct seq_file *seq, loff_t *pos) struct fib_table *tb; rcu_read_lock(); tb = fib_get_table(iter->p.net, RT_TABLE_MAIN); tb = fib_get_table(seq_file_net(seq), RT_TABLE_MAIN); if (!tb) return NULL; Loading