From: Patrick McHardy Date: Tue, 15 Jun 2010 15:31:06 +0000 (+0200) Subject: Merge branch 'master' of /repos/git/net-next-2.6 X-Git-Tag: v3.12-rc1~9497^2~374^2~9 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=f9181f4ffc71d7b7dd1906c9a11d51d6659220ae;p=kernel%2Fkernel-generic.git Merge branch 'master' of /repos/git/net-next-2.6 Conflicts: include/net/netfilter/xt_rateest.h net/bridge/br_netfilter.c net/netfilter/nf_conntrack_core.c Signed-off-by: Patrick McHardy --- f9181f4ffc71d7b7dd1906c9a11d51d6659220ae diff --cc include/net/netfilter/xt_rateest.h index b1d780e,5e14277..5a2978d --- a/include/net/netfilter/xt_rateest.h +++ b/include/net/netfilter/xt_rateest.h @@@ -12,7 -5,11 +12,8 @@@ struct xt_rateest struct hlist_node list; char name[IFNAMSIZ]; unsigned int refcnt; - spinlock_t lock; struct gnet_estimator params; - struct gnet_stats_rate_est rstats; - struct gnet_stats_basic_packed bstats; + struct rcu_head rcu; }; extern struct xt_rateest *xt_rateest_lookup(const char *name); diff --cc net/bridge/br_netfilter.c index cbea5af,0685b25..6bb6f7c --- a/net/bridge/br_netfilter.c +++ b/net/bridge/br_netfilter.c @@@ -244,7 -244,8 +244,7 @@@ static int br_nf_pre_routing_finish_ipv kfree_skb(skb); return 0; } - skb_dst_set_noref(skb, &rt->u.dst); - dst_hold(&rt->dst); - skb_dst_set(skb, &rt->dst); ++ skb_dst_set_noref(skb, &rt->dst); skb->dev = nf_bridge->physindev; nf_bridge_update_protocol(skb); @@@ -395,7 -396,8 +395,7 @@@ bridged_dnat kfree_skb(skb); return 0; } - skb_dst_set_noref(skb, &rt->u.dst); - dst_hold(&rt->dst); - skb_dst_set(skb, &rt->dst); ++ skb_dst_set_noref(skb, &rt->dst); } skb->dev = nf_bridge->physindev; diff --cc net/netfilter/nf_conntrack_core.c index 9c66141,7728898..16b41b4 --- a/net/netfilter/nf_conntrack_core.c +++ b/net/netfilter/nf_conntrack_core.c @@@ -1383,14 -1361,11 +1381,13 @@@ static int nf_conntrack_init_init_net(v goto err_extend; #endif /* Set up fake conntrack: to never be deleted, not in any hashes */ - write_pnet(&nf_conntrack_untracked.ct_net, &init_net); - atomic_set(&nf_conntrack_untracked.ct_general.use, 1); + for_each_possible_cpu(cpu) { + struct nf_conn *ct = &per_cpu(nf_conntrack_untracked, cpu); - + write_pnet(&ct->ct_net, &init_net); + atomic_set(&ct->ct_general.use, 1); + } /* - and look it like as a confirmed connection */ - set_bit(IPS_CONFIRMED_BIT, &nf_conntrack_untracked.status); - + nf_ct_untracked_status_or(IPS_CONFIRMED | IPS_UNTRACKED); return 0; #ifdef CONFIG_NF_CONNTRACK_ZONES