aboutsummaryrefslogtreecommitdiffstats
path: root/net/bridge
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-06-01 05:48:31 -0400
committerPatrick McHardy <kaber@trash.net>2010-06-01 05:48:31 -0400
commita8b563894d6fee9b90b7d6ed76f8ec28ad45bcbe (patch)
tree6171cda0a5668f2fa0c6570bb37a4a01cbb5f718 /net/bridge
parent0da529a7d996f100569040857ddf4d63a1b24e82 (diff)
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>
Diffstat (limited to 'net/bridge')
-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 44420992f72f..cbea5af24ce6 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)
244 kfree_skb(skb); 244 kfree_skb(skb);
245 return 0; 245 return 0;
246 } 246 }
247 dst_hold(&rt->u.dst); 247 skb_dst_set_noref(skb, &rt->u.dst);
248 skb_dst_set(skb, &rt->u.dst);
249 248
250 skb->dev = nf_bridge->physindev; 249 skb->dev = nf_bridge->physindev;
251 nf_bridge_update_protocol(skb); 250 nf_bridge_update_protocol(skb);
@@ -396,8 +395,7 @@ bridged_dnat:
396 kfree_skb(skb); 395 kfree_skb(skb);
397 return 0; 396 return 0;
398 } 397 }
399 dst_hold(&rt->u.dst); 398 skb_dst_set_noref(skb, &rt->u.dst);
400 skb_dst_set(skb, &rt->u.dst);
401 } 399 }
402 400
403 skb->dev = nf_bridge->physindev; 401 skb->dev = nf_bridge->physindev;