summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-06-01 11:48:31 +0200
committerPatrick McHardy <kaber@trash.net>2010-06-01 11:48:31 +0200
commita8b563894d6fee9b90b7d6ed76f8ec28ad45bcbe (patch)
tree6171cda0a5668f2fa0c6570bb37a4a01cbb5f718
parent0da529a7d996f100569040857ddf4d63a1b24e82 (diff)
downloadlinux-3.10-a8b563894d6fee9b90b7d6ed76f8ec28ad45bcbe.tar.gz
linux-3.10-a8b563894d6fee9b90b7d6ed76f8ec28ad45bcbe.tar.bz2
linux-3.10-a8b563894d6fee9b90b7d6ed76f8ec28ad45bcbe.zip
netfilter: br_netfilter: use skb_set_noref()
Avoid dirtying bridge_parent_rtable refcount, using new dst noref infrastructure. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Patrick McHardy <kaber@trash.net>
-rw-r--r--net/bridge/br_netfilter.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/net/bridge/br_netfilter.c b/net/bridge/br_netfilter.c
index 44420992f72..cbea5af24ce 100644
--- a/net/bridge/br_netfilter.c
+++ b/net/bridge/br_netfilter.c
@@ -244,8 +244,7 @@ static int br_nf_pre_routing_finish_ipv6(struct sk_buff *skb)
kfree_skb(skb);
return 0;
}
- dst_hold(&rt->u.dst);
- skb_dst_set(skb, &rt->u.dst);
+ skb_dst_set_noref(skb, &rt->u.dst);
skb->dev = nf_bridge->physindev;
nf_bridge_update_protocol(skb);
@@ -396,8 +395,7 @@ bridged_dnat:
kfree_skb(skb);
return 0;
}
- dst_hold(&rt->u.dst);
- skb_dst_set(skb, &rt->u.dst);
+ skb_dst_set_noref(skb, &rt->u.dst);
}
skb->dev = nf_bridge->physindev;