]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - net/ipv6/inet6_hashtables.c
[NETFILTER]: x_tables: return new table from {arp,ip,ip6}t_register_table()
[linux-2.6-omap-h63xx.git] / net / ipv6 / inet6_hashtables.c
index adc73adadfae47a892da6527309396e57a530590..a66a7d8e281133f7f8a6000cf482b35bfe5c4cd9 100644 (file)
@@ -43,7 +43,7 @@ void __inet6_hash(struct inet_hashinfo *hashinfo,
        }
 
        __sk_add_node(sk, list);
-       sock_prot_inc_use(sk->sk_prot);
+       sock_prot_inuse_add(sk->sk_prot, 1);
        write_unlock(lock);
 }
 EXPORT_SYMBOL(__inet6_hash);
@@ -193,7 +193,7 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
                   sk2->sk_family              == PF_INET6       &&
                   ipv6_addr_equal(&tw6->tw_v6_daddr, saddr)     &&
                   ipv6_addr_equal(&tw6->tw_v6_rcv_saddr, daddr) &&
-                  sk2->sk_bound_dev_if == sk->sk_bound_dev_if) {
+                  (!sk2->sk_bound_dev_if || sk2->sk_bound_dev_if == dif)) {
                        if (twsk_unique(sk, sk2, twp))
                                goto unique;
                        else
@@ -216,7 +216,7 @@ unique:
        BUG_TRAP(sk_unhashed(sk));
        __sk_add_node(sk, &head->chain);
        sk->sk_hash = hash;
-       sock_prot_inc_use(sk->sk_prot);
+       sock_prot_inuse_add(sk->sk_prot, 1);
        write_unlock(lock);
 
        if (twp != NULL) {