Brian Haley <[email protected]> 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
_______________________________________________
Containers mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/containers

_______________________________________________
Devel mailing list
[email protected]
https://openvz.org/mailman/listinfo/devel

Reply via email to