[NETNS][IPV6] mcast - fix compilation warning when procfs is not compiled in
authorDaniel Lezcano <dlezcano@fr.ibm.com>
Fri, 21 Mar 2008 11:10:53 +0000 (04:10 -0700)
committerDavid S. Miller <davem@davemloft.net>
Fri, 21 Mar 2008 11:10:53 +0000 (04:10 -0700)
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>
net/ipv6/mcast.c

index f287905..957ac7e 100644 (file)
@@ -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 = {