Commit 956c920786694f51601a0ef7ee12956fd6aa216e
Committed by
Eric W. Biederman
1 parent
62ca24baf1
Exists in
master
and in
4 other branches
net: fix get_net_ns_by_fd for !CONFIG_NET_NS
After merging the final tree, today's linux-next build (powerpc ppc44x_defconfig) failed like this: net/built-in.o: In function `get_net_ns_by_fd': (.text+0x11976): undefined reference to `netns_operations' net/built-in.o: In function `get_net_ns_by_fd': (.text+0x1197a): undefined reference to `netns_operations' netns_operations is only available if CONFIG_NET_NS is set ... Caused by commit f063052947f7 ("net: Allow setting the network namespace by fd"). Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au> Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Showing 1 changed file with 27 additions and 22 deletions Side-by-side Diff
net/core/net_namespace.c
... | ... | @@ -316,6 +316,28 @@ |
316 | 316 | } |
317 | 317 | EXPORT_SYMBOL_GPL(__put_net); |
318 | 318 | |
319 | +struct net *get_net_ns_by_fd(int fd) | |
320 | +{ | |
321 | + struct proc_inode *ei; | |
322 | + struct file *file; | |
323 | + struct net *net; | |
324 | + | |
325 | + net = ERR_PTR(-EINVAL); | |
326 | + file = proc_ns_fget(fd); | |
327 | + if (!file) | |
328 | + goto out; | |
329 | + | |
330 | + ei = PROC_I(file->f_dentry->d_inode); | |
331 | + if (ei->ns_ops != &netns_operations) | |
332 | + goto out; | |
333 | + | |
334 | + net = get_net(ei->ns); | |
335 | +out: | |
336 | + if (file) | |
337 | + fput(file); | |
338 | + return net; | |
339 | +} | |
340 | + | |
319 | 341 | #else |
320 | 342 | struct net *copy_net_ns(unsigned long flags, struct net *old_net) |
321 | 343 | { |
... | ... | @@ -323,6 +345,11 @@ |
323 | 345 | return ERR_PTR(-EINVAL); |
324 | 346 | return old_net; |
325 | 347 | } |
348 | + | |
349 | +struct net *get_net_ns_by_fd(int fd) | |
350 | +{ | |
351 | + return ERR_PTR(-EINVAL); | |
352 | +} | |
326 | 353 | #endif |
327 | 354 | |
328 | 355 | struct net *get_net_ns_by_pid(pid_t pid) |
... | ... | @@ -344,28 +371,6 @@ |
344 | 371 | return net; |
345 | 372 | } |
346 | 373 | EXPORT_SYMBOL_GPL(get_net_ns_by_pid); |
347 | - | |
348 | -struct net *get_net_ns_by_fd(int fd) | |
349 | -{ | |
350 | - struct proc_inode *ei; | |
351 | - struct file *file; | |
352 | - struct net *net; | |
353 | - | |
354 | - net = ERR_PTR(-EINVAL); | |
355 | - file = proc_ns_fget(fd); | |
356 | - if (!file) | |
357 | - goto out; | |
358 | - | |
359 | - ei = PROC_I(file->f_dentry->d_inode); | |
360 | - if (ei->ns_ops != &netns_operations) | |
361 | - goto out; | |
362 | - | |
363 | - net = get_net(ei->ns); | |
364 | -out: | |
365 | - if (file) | |
366 | - fput(file); | |
367 | - return net; | |
368 | -} | |
369 | 374 | |
370 | 375 | static int __init net_ns_init(void) |
371 | 376 | { |