Thread (1 message) 1 message, 1 author, 2010-09-23

Re: [PATCH 7/8] net: Allow setting the network namespace by fd

From: Eric W. Biederman <hidden>
Date: 2010-09-23 16:16:04
Also in: linux-fsdevel, lkml, netfilter-devel

Brian Haley [off-list ref] writes:
On 09/23/2010 04:51 AM, Eric W. Biederman wrote:
quoted
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.
...
quoted
+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.
quoted
+	net = ERR_PTR(-EINVAL);
or this?
quoted
+	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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help