--- a/net/bridge/br_input.c
+++ b/net/bridge/br_input.c
-@@ -195,6 +195,9 @@ static void __br_handle_local_finish(str
+@@ -193,6 +193,9 @@ static void __br_handle_local_finish(str
/* note: already called with rcu_read_lock */
static int br_handle_local_finish(struct net *net, struct sock *sk, struct sk_buff *skb)
{
__br_handle_local_finish(skb);
/* return 1 to signal the okfn() was called so it's ok to use the skb */
-@@ -291,6 +294,15 @@ rx_handler_result_t br_handle_frame(stru
+@@ -289,6 +292,17 @@ rx_handler_result_t br_handle_frame(stru
forward:
switch (p->state) {
+ if (ether_addr_equal(p->br->dev->dev_addr, dest))
+ skb->pkt_type = PACKET_HOST;
+
-+ NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING,
++ if (NF_HOOK(NFPROTO_BRIDGE, NF_BR_PRE_ROUTING,
+ dev_net(skb->dev), NULL, skb, skb->dev, NULL,
-+ br_handle_local_finish);
++ br_handle_local_finish) == 1) {
++ return RX_HANDLER_PASS;
++ }
+ break;
+
case BR_STATE_FORWARDING: