From ea82edf704f6bf3c3a51d0dbee816c5bbc6d3974 Mon Sep 17 00:00:00 2001 From: Daniel Lezcano Date: Fri, 21 Mar 2008 04:10:53 -0700 Subject: [PATCH] [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 Signed-off-by: David S. Miller --- net/ipv6/mcast.c | 53 ++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/net/ipv6/mcast.c b/net/ipv6/mcast.c index f287905..957ac7e 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 = { -- 2.7.4