Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (1232 commits) iucv: Fix bad merging. net_sched: Add size table for qdiscs net_sched: Add accessor function for packet length for qdiscs net_sched: Add qdisc_enqueue wrapper highmem: Export totalhigh_pages. ipv6 mcast: Omit redundant address family checks in ip6_mc_source(). net: Use standard structures for generic socket address structures. ipv6 netns: Make several "global" sysctl variables namespace aware. netns: Use net_eq() to compare net-namespaces for optimization. ipv6: remove unused macros from net/ipv6.h ipv6: remove unused parameter from ip6_ra_control tcp: fix kernel panic with listening_get_next tcp: Remove redundant checks when setting eff_sacks tcp: options clean up tcp: Fix MD5 signatures for non-linear skbs sctp: Update sctp global memory limit allocations. sctp: remove unnecessary byteshifting, calculate directly in big-endian sctp: Allow only 1 listening socket with SO_REUSEADDR sctp: Do not leak memory on multiple listen() calls sctp: Support ipv6only AF_INET6 sockets. ...
This commit is contained in:
@@ -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;
|
||||
@@ -63,6 +87,14 @@ int seq_release_net(struct inode *ino, struct file *f)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(seq_release_net);
|
||||
|
||||
int single_release_net(struct inode *ino, struct file *f)
|
||||
{
|
||||
struct seq_file *seq = f->private_data;
|
||||
put_net(seq->private);
|
||||
return single_release(ino, f);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(single_release_net);
|
||||
|
||||
static struct net *get_proc_task_net(struct inode *dir)
|
||||
{
|
||||
struct task_struct *task;
|
||||
|
Reference in New Issue
Block a user