Loading fs/proc/proc_net.c +24 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,30 @@ int seq_open_net(struct inode *ino, struct file *f, } EXPORT_SYMBOL_GPL(seq_open_net); int single_open_net(struct inode *inode, struct file *file, int (*show)(struct seq_file *, void *)) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; } EXPORT_SYMBOL_GPL(single_open_net); int seq_release_net(struct inode *ino, struct file *f) { struct seq_file *seq; Loading include/linux/seq_file_net.h +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ struct seq_net_private { int seq_open_net(struct inode *, struct file *, const struct seq_operations *, int); int single_open_net(struct inode *, struct file *file, int (*show)(struct seq_file *, void *)); int seq_release_net(struct inode *, struct file *); static inline struct net *seq_file_net(struct seq_file *seq) { Loading net/ipv4/fib_trie.c +1 −12 Original line number Diff line number Diff line Loading @@ -2251,18 +2251,7 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v) static int fib_triestat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; net = get_proc_net(inode); if (net == NULL) return -ENXIO; err = single_open(file, fib_triestat_seq_show, net); if (err < 0) { put_net(net); return err; } return 0; return single_open_net(inode, file, fib_triestat_seq_show); } static int fib_triestat_seq_release(struct inode *ino, struct file *f) Loading net/ipv4/proc.c +3 −54 Original line number Diff line number Diff line Loading @@ -71,24 +71,7 @@ static int sockstat_seq_show(struct seq_file *seq, void *v) static int sockstat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, sockstat_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, sockstat_seq_show); } static int sockstat_seq_release(struct inode *inode, struct file *file) Loading Loading @@ -397,24 +380,7 @@ static int snmp_seq_show(struct seq_file *seq, void *v) static int snmp_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, snmp_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, snmp_seq_show); } static int snmp_seq_release(struct inode *inode, struct file *file) Loading Loading @@ -469,24 +435,7 @@ static int netstat_seq_show(struct seq_file *seq, void *v) static int netstat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, netstat_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, netstat_seq_show); } static int netstat_seq_release(struct inode *inode, struct file *file) Loading net/ipv6/proc.c +1 −18 Original line number Diff line number Diff line Loading @@ -183,24 +183,7 @@ static int snmp6_seq_show(struct seq_file *seq, void *v) static int sockstat6_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, sockstat6_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, sockstat6_seq_show); } static int sockstat6_seq_release(struct inode *inode, struct file *file) Loading Loading
fs/proc/proc_net.c +24 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,30 @@ int seq_open_net(struct inode *ino, struct file *f, } EXPORT_SYMBOL_GPL(seq_open_net); int single_open_net(struct inode *inode, struct file *file, int (*show)(struct seq_file *, void *)) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; } EXPORT_SYMBOL_GPL(single_open_net); int seq_release_net(struct inode *ino, struct file *f) { struct seq_file *seq; Loading
include/linux/seq_file_net.h +2 −0 Original line number Diff line number Diff line Loading @@ -14,6 +14,8 @@ struct seq_net_private { int seq_open_net(struct inode *, struct file *, const struct seq_operations *, int); int single_open_net(struct inode *, struct file *file, int (*show)(struct seq_file *, void *)); int seq_release_net(struct inode *, struct file *); static inline struct net *seq_file_net(struct seq_file *seq) { Loading
net/ipv4/fib_trie.c +1 −12 Original line number Diff line number Diff line Loading @@ -2251,18 +2251,7 @@ static int fib_triestat_seq_show(struct seq_file *seq, void *v) static int fib_triestat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; net = get_proc_net(inode); if (net == NULL) return -ENXIO; err = single_open(file, fib_triestat_seq_show, net); if (err < 0) { put_net(net); return err; } return 0; return single_open_net(inode, file, fib_triestat_seq_show); } static int fib_triestat_seq_release(struct inode *ino, struct file *f) Loading
net/ipv4/proc.c +3 −54 Original line number Diff line number Diff line Loading @@ -71,24 +71,7 @@ static int sockstat_seq_show(struct seq_file *seq, void *v) static int sockstat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, sockstat_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, sockstat_seq_show); } static int sockstat_seq_release(struct inode *inode, struct file *file) Loading Loading @@ -397,24 +380,7 @@ static int snmp_seq_show(struct seq_file *seq, void *v) static int snmp_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, snmp_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, snmp_seq_show); } static int snmp_seq_release(struct inode *inode, struct file *file) Loading Loading @@ -469,24 +435,7 @@ static int netstat_seq_show(struct seq_file *seq, void *v) static int netstat_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, netstat_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, netstat_seq_show); } static int netstat_seq_release(struct inode *inode, struct file *file) Loading
net/ipv6/proc.c +1 −18 Original line number Diff line number Diff line Loading @@ -183,24 +183,7 @@ static int snmp6_seq_show(struct seq_file *seq, void *v) static int sockstat6_seq_open(struct inode *inode, struct file *file) { int err; struct net *net; err = -ENXIO; net = get_proc_net(inode); if (net == NULL) goto err_net; err = single_open(file, sockstat6_seq_show, net); if (err < 0) goto err_open; return 0; err_open: put_net(net); err_net: return err; return single_open_net(inode, file, sockstat6_seq_show); } static int sockstat6_seq_release(struct inode *inode, struct file *file) Loading