]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv6/af_inet6.c
[PARISC] ROUND_UP macro cleanup in arch/parisc
[linux-2.6-omap-h63xx.git] / net / ipv6 / af_inet6.c
index 82572b507547e6bfff720a5e0d6dc8fdbe7c847a..6dd377253cf77dbc615d436ef123e7323d3ee1cc 100644 (file)
@@ -42,7 +42,6 @@
 #include <linux/inet.h>
 #include <linux/netdevice.h>
 #include <linux/icmpv6.h>
-#include <linux/smp_lock.h>
 #include <linux/netfilter_ipv6.h>
 
 #include <net/ip.h>
@@ -98,6 +97,11 @@ static int inet6_create(struct socket *sock, int protocol)
        int try_loading_module = 0;
        int err;
 
+       if (sock->type != SOCK_RAW &&
+           sock->type != SOCK_DGRAM &&
+           !inet_ehash_secret)
+               build_ehash_secret();
+
        /* Look for the requested type/protocol pair. */
        answer = NULL;
 lookup_protocol:
@@ -707,61 +711,28 @@ int ipv6_opt_accepted(struct sock *sk, struct sk_buff *skb)
 
 EXPORT_SYMBOL_GPL(ipv6_opt_accepted);
 
-int
-snmp6_mib_init(void *ptr[2], size_t mibsize, size_t mibalign)
-{
-       if (ptr == NULL)
-               return -EINVAL;
-
-       ptr[0] = __alloc_percpu(mibsize);
-       if (!ptr[0])
-               goto err0;
-
-       ptr[1] = __alloc_percpu(mibsize);
-       if (!ptr[1])
-               goto err1;
-
-       return 0;
-
-err1:
-       free_percpu(ptr[0]);
-       ptr[0] = NULL;
-err0:
-       return -ENOMEM;
-}
-
-void
-snmp6_mib_free(void *ptr[2])
-{
-       if (ptr == NULL)
-               return;
-       free_percpu(ptr[0]);
-       free_percpu(ptr[1]);
-       ptr[0] = ptr[1] = NULL;
-}
-
 static int __init init_ipv6_mibs(void)
 {
-       if (snmp6_mib_init((void **)ipv6_statistics, sizeof (struct ipstats_mib),
-                          __alignof__(struct ipstats_mib)) < 0)
+       if (snmp_mib_init((void **)ipv6_statistics, sizeof (struct ipstats_mib),
+                         __alignof__(struct ipstats_mib)) < 0)
                goto err_ip_mib;
-       if (snmp6_mib_init((void **)icmpv6_statistics, sizeof (struct icmpv6_mib),
-                          __alignof__(struct icmpv6_mib)) < 0)
+       if (snmp_mib_init((void **)icmpv6_statistics, sizeof (struct icmpv6_mib),
+                         __alignof__(struct icmpv6_mib)) < 0)
                goto err_icmp_mib;
-       if (snmp6_mib_init((void **)udp_stats_in6, sizeof (struct udp_mib),
-                          __alignof__(struct udp_mib)) < 0)
+       if (snmp_mib_init((void **)udp_stats_in6, sizeof (struct udp_mib),
+                         __alignof__(struct udp_mib)) < 0)
                goto err_udp_mib;
-       if (snmp6_mib_init((void **)udplite_stats_in6, sizeof (struct udp_mib),
-                          __alignof__(struct udp_mib)) < 0)
+       if (snmp_mib_init((void **)udplite_stats_in6, sizeof (struct udp_mib),
+                         __alignof__(struct udp_mib)) < 0)
                goto err_udplite_mib;
        return 0;
 
 err_udplite_mib:
-       snmp6_mib_free((void **)udp_stats_in6);
+       snmp_mib_free((void **)udp_stats_in6);
 err_udp_mib:
-       snmp6_mib_free((void **)icmpv6_statistics);
+       snmp_mib_free((void **)icmpv6_statistics);
 err_icmp_mib:
-       snmp6_mib_free((void **)ipv6_statistics);
+       snmp_mib_free((void **)ipv6_statistics);
 err_ip_mib:
        return -ENOMEM;
 
@@ -769,10 +740,10 @@ err_ip_mib:
 
 static void cleanup_ipv6_mibs(void)
 {
-       snmp6_mib_free((void **)ipv6_statistics);
-       snmp6_mib_free((void **)icmpv6_statistics);
-       snmp6_mib_free((void **)udp_stats_in6);
-       snmp6_mib_free((void **)udplite_stats_in6);
+       snmp_mib_free((void **)ipv6_statistics);
+       snmp_mib_free((void **)icmpv6_statistics);
+       snmp_mib_free((void **)udp_stats_in6);
+       snmp_mib_free((void **)udplite_stats_in6);
 }
 
 static int __init inet6_init(void)