static int proc_tgid_net_readdir(struct file *file, struct dir_context *ctx) { int ret; struct net *net; ret = -EINVAL; net = get_proc_task_net(file_inode(file)); if (net != NULL) { ret = proc_readdir_de(net->proc_net, file, ctx); put_net(net); } return ret; }
static int proc_tgid_net_readdir(struct file *filp, void *dirent, filldir_t filldir) { int ret; struct net *net; ret = -EINVAL; net = get_proc_task_net(filp->f_path.dentry->d_inode); if (net != NULL) { ret = proc_readdir_de(net->proc_net, filp, dirent, filldir); put_net(net); } return ret; }
static struct dentry *proc_tgid_net_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd) { struct dentry *de; struct net *net; de = ERR_PTR(-ENOENT); net = get_proc_task_net(dir); if (net != NULL) { de = proc_lookup_de(net->proc_net, dir, dentry); put_net(net); } return de; }
static int proc_tgid_net_getattr(struct vfsmount *mnt, struct dentry *dentry, struct kstat *stat) { struct inode *inode = dentry->d_inode; struct net *net; net = get_proc_task_net(inode); generic_fillattr(inode, stat); if (net != NULL) { stat->nlink = net->proc_net->nlink; put_net(net); } return 0; }