--- zzzz-none-000/linux-2.6.32.61/net/bridge/br_netfilter.c 2013-06-10 09:43:48.000000000 +0000 +++ ar9-7330-650/linux-2.6.32.61/net/bridge/br_netfilter.c 2014-11-06 14:30:40.000000000 +0000 @@ -133,15 +133,17 @@ static inline struct rtable *bridge_parent_rtable(const struct net_device *dev) { - struct net_bridge_port *port = rcu_dereference(dev->br_port); - + struct net_bridge_port *port; + + port = br_port_get_rcu(dev); return port ? &port->br->fake_rtable : NULL; } static inline struct net_device *bridge_parent(const struct net_device *dev) { - struct net_bridge_port *port = rcu_dereference(dev->br_port); + struct net_bridge_port *port; + port = br_port_get_rcu(dev); return port ? port->br->dev : NULL; } @@ -604,10 +606,14 @@ memset(IPCB(skb), 0, sizeof(struct inet_skb_parm)); nf_bridge_put(skb->nf_bridge); - if (!nf_bridge_alloc(skb)) + if (!nf_bridge_alloc(skb)) { + printk(KERN_DEBUG "br_nf_pre_routing: !nf_bridge_alloc(skb)\n"); return NF_DROP; - if (!setup_pre_routing(skb)) + } + if (!setup_pre_routing(skb)) { + printk(KERN_DEBUG "br_nf_pre_routing: !setup_pre_routing(skb)\n"); return NF_DROP; + } store_orig_dstaddr(skb); NF_HOOK(PF_INET, NF_INET_PRE_ROUTING, skb, skb->dev, NULL, @@ -618,6 +624,7 @@ inhdr_error: // IP_INC_STATS_BH(IpInHdrErrors); out: + printk(KERN_DEBUG "br_nf_pre_routing: out"); return NF_DROP; }