diff options
author | Daniel Lezcano <dlezcano@fr.ibm.com> | 2008-03-21 14:10:53 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-03-21 14:10:53 +0300 |
commit | ea82edf704f6bf3c3a51d0dbee816c5bbc6d3974 (patch) | |
tree | fd0fd1832bedaeaabb4ec6ed228389de7a9b5b18 /net/ipv6 | |
parent | 82cc1a7a56872056af0ead6c7d695aa223f36695 (diff) | |
download | linux-ea82edf704f6bf3c3a51d0dbee816c5bbc6d3974.tar.xz |
[NETNS][IPV6] mcast - fix compilation warning when procfs is not compiled in
When CONFIG_PROC_FS=no, the out_sock_create label is not used because
the code using it is disabled and that leads to a warning at compile
time.
This patch fix that by making a specific function to initialize proc
for igmp6, and remove the annoying CONFIG_PROC_FS sections in
init/exit function.
Signed-off-by: Daniel Lezcano <dlezcano@fr.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6')
-rw-r--r-- | net/ipv6/mcast.c | 53 |
1 files changed, 38 insertions, 15 deletions
diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index f2879056fab0..957ac7e9e929 100644 --- a/net/ipv6/mcast.c +++ b/net/ipv6/mcast.c @@ -2633,6 +2633,41 @@ static const struct file_operations igmp6_mcf_seq_fops = { .llseek = seq_lseek, .release = seq_release_net, }; + +static int igmp6_proc_init(struct net *net) +{ + int err; + + err = -ENOMEM; + if (!proc_net_fops_create(net, "igmp6", S_IRUGO, &igmp6_mc_seq_fops)) + goto out; + if (!proc_net_fops_create(net, "mcfilter6", S_IRUGO, + &igmp6_mcf_seq_fops)) + goto out_proc_net_igmp6; + + err = 0; +out: + return err; + +out_proc_net_igmp6: + proc_net_remove(net, "igmp6"); + goto out; +} + +static void igmp6_proc_exit(struct net *net) +{ + proc_net_remove(net, "mcfilter6"); + proc_net_remove(net, "igmp6"); +} +#else +static int igmp6_proc_init(struct net *net) +{ + return 0; +} +static void igmp6_proc_exit(struct net *net) +{ + ; +} #endif static int igmp6_net_init(struct net *net) @@ -2658,18 +2693,9 @@ static int igmp6_net_init(struct net *net) np = inet6_sk(sk); np->hop_limit = 1; -#ifdef CONFIG_PROC_FS - err = -ENOMEM; - if (!proc_net_fops_create(net, "igmp6", S_IRUGO, &igmp6_mc_seq_fops)) - goto out_sock_create; - if (!proc_net_fops_create(net, "mcfilter6", S_IRUGO, - &igmp6_mcf_seq_fops)) { - proc_net_remove(net, "igmp6"); + err = igmp6_proc_init(net); + if (err) goto out_sock_create; - } -#endif - - err = 0; out: return err; @@ -2681,10 +2707,7 @@ out_sock_create: static void igmp6_net_exit(struct net *net) { sk_release_kernel(net->ipv6.igmp_sk); -#ifdef CONFIG_PROC_FS - proc_net_remove(net, "mcfilter6"); - proc_net_remove(net, "igmp6"); -#endif + igmp6_proc_exit(net); } static struct pernet_operations igmp6_net_ops = { |