tcp: remove parameter from tcp_recv_urg().
[safe/jmp/linux-2.6] / net / ipv4 / ip_input.c
index 1b6475c..1a58a6f 100644 (file)
@@ -209,9 +209,17 @@ static int ip_local_deliver_finish(struct sk_buff *skb)
 
                hash = protocol & (MAX_INET_PROTOS - 1);
                ipprot = rcu_dereference(inet_protos[hash]);
-               if (ipprot != NULL && (net == &init_net || ipprot->netns_ok)) {
+               if (ipprot != NULL) {
                        int ret;
 
+                       if (!net_eq(net, &init_net) && !ipprot->netns_ok) {
+                               if (net_ratelimit())
+                                       printk("%s: proto %d isn't netns-ready\n",
+                                               __func__, protocol);
+                               kfree_skb(skb);
+                               goto out;
+                       }
+
                        if (!ipprot->no_policy) {
                                if (!xfrm4_policy_check(NULL, XFRM_POLICY_IN, skb)) {
                                        kfree_skb(skb);
@@ -340,9 +348,9 @@ static int ip_rcv_finish(struct sk_buff *skb)
                struct ip_rt_acct *st = per_cpu_ptr(ip_rt_acct, smp_processor_id());
                u32 idx = skb->dst->tclassid;
                st[idx&0xFF].o_packets++;
-               st[idx&0xFF].o_bytes+=skb->len;
+               st[idx&0xFF].o_bytes += skb->len;
                st[(idx>>16)&0xFF].i_packets++;
-               st[(idx>>16)&0xFF].i_bytes+=skb->len;
+               st[(idx>>16)&0xFF].i_bytes += skb->len;
        }
 #endif