]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/sctp/protocol.c
avr32: proc: use non-racy method for /proc/tlb creation
[linux-2.6-omap-h63xx.git] / net / sctp / protocol.c
index 067c8a1658d6fbf0872129baeb07ba0f0d7656d6..0ec234b762c20f3a876e326017df3626a4ee9759 100644 (file)
@@ -650,7 +650,9 @@ static int sctp_inetaddr_event(struct notifier_block *this, unsigned long ev,
                spin_lock_bh(&sctp_local_addr_lock);
                list_for_each_entry_safe(addr, temp,
                                        &sctp_local_addr_list, list) {
-                       if (addr->a.v4.sin_addr.s_addr == ifa->ifa_local) {
+                       if (addr->a.sa.sa_family == AF_INET &&
+                                       addr->a.v4.sin_addr.s_addr ==
+                                       ifa->ifa_local) {
                                found = 1;
                                addr->valid = 0;
                                list_del_rcu(&addr->list);
@@ -972,24 +974,14 @@ int sctp_register_pf(struct sctp_pf *pf, sa_family_t family)
        return 1;
 }
 
-static int __init init_sctp_mibs(void)
+static inline int init_sctp_mibs(void)
 {
-       sctp_statistics[0] = alloc_percpu(struct sctp_mib);
-       if (!sctp_statistics[0])
-               return -ENOMEM;
-       sctp_statistics[1] = alloc_percpu(struct sctp_mib);
-       if (!sctp_statistics[1]) {
-               free_percpu(sctp_statistics[0]);
-               return -ENOMEM;
-       }
-       return 0;
-
+       return snmp_mib_init((void**)sctp_statistics, sizeof(struct sctp_mib));
 }
 
-static void cleanup_sctp_mibs(void)
+static inline void cleanup_sctp_mibs(void)
 {
-       free_percpu(sctp_statistics[0]);
-       free_percpu(sctp_statistics[1]);
+       snmp_mib_free((void**)sctp_statistics);
 }
 
 static void sctp_v4_pf_init(void)