Brian Haley <brian.haley@xxxxxx> writes: > On 09/23/2010 04:51 AM, Eric W. Biederman wrote: >> >> Take advantage of the new abstraction and allow network devices >> to be placed in any network namespace that we have a fd to talk >> about. >> > ... >> +struct net *get_net_ns_by_fd(int fd) >> +{ >> + struct proc_inode *ei; >> + struct file *file; >> + struct net *net; >> + >> + file = NULL; > > No need to initialize this. > >> + net = ERR_PTR(-EINVAL); > > or this? > >> + file = proc_ns_fget(fd); >> + if (!fd) >> + goto out; >> + return ERR_PTR(-EINVAL); > > Shouldn't this be: > > if (!file) > > And the "goto" seems wrong, especially without a {} here. Unless you > meant to keep the "goto" and branch below? I think I changed my mind half way through writing the code and never did anything about it. Oops. Thanks fixed. It is now: struct net *get_net_ns_by_fd(int fd) { struct proc_inode *ei; struct file *file; struct net *net; net = ERR_PTR(-EINVAL); file = proc_ns_fget(fd); if (!file) goto out; ei = PROC_I(file->f_dentry->d_inode); if (ei->ns_ops != &netns_operations) goto out; net = get_net(ei->ns); out: if (file) fput(file); return net; } Which at least makes sense. Now to test it to double check it does what it should do. Eric -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html