diff options
-rw-r--r-- | net/core/net_namespace.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 6c6b86d0da15..e41e5110c65c 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c | |||
@@ -310,19 +310,17 @@ struct net *get_net_ns_by_fd(int fd) | |||
310 | struct file *file; | 310 | struct file *file; |
311 | struct net *net; | 311 | struct net *net; |
312 | 312 | ||
313 | net = ERR_PTR(-EINVAL); | ||
314 | file = proc_ns_fget(fd); | 313 | file = proc_ns_fget(fd); |
315 | if (!file) | 314 | if (IS_ERR(file)) |
316 | goto out; | 315 | return ERR_CAST(file); |
317 | 316 | ||
318 | ei = PROC_I(file->f_dentry->d_inode); | 317 | ei = PROC_I(file->f_dentry->d_inode); |
319 | if (ei->ns_ops != &netns_operations) | 318 | if (ei->ns_ops == &netns_operations) |
320 | goto out; | 319 | net = get_net(ei->ns); |
320 | else | ||
321 | net = ERR_PTR(-EINVAL); | ||
321 | 322 | ||
322 | net = get_net(ei->ns); | 323 | fput(file); |
323 | out: | ||
324 | if (file) | ||
325 | fput(file); | ||
326 | return net; | 324 | return net; |
327 | } | 325 | } |
328 | 326 | ||