summaryrefslogtreecommitdiffstats
path: root/net/sched
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2009-11-04 05:23:31 -0800
committerDavid S. Miller <davem@davemloft.net>2009-11-04 05:23:31 -0800
commitd0075634cf9d288988f57392a1f132d2053af961 (patch)
treebe60c4ea0c9fc72d8d644a95be0452262c6e7941 /net/sched
parentc7079857cd89cb5bc686df1d441db8ef0137abf1 (diff)
downloadlinux-d0075634cf9d288988f57392a1f132d2053af961.tar.gz
linux-d0075634cf9d288988f57392a1f132d2053af961.tar.bz2
linux-d0075634cf9d288988f57392a1f132d2053af961.zip
em_meta: avoid one dev_put()
Another rcu conversion to avoid one dev_hold()/dev_put() pair Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sched')
-rw-r--r--net/sched/em_meta.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/net/sched/em_meta.c b/net/sched/em_meta.c
index 18d85d259104..8e8d836f00c0 100644
--- a/net/sched/em_meta.c
+++ b/net/sched/em_meta.c
@@ -303,17 +303,17 @@ META_COLLECTOR(var_sk_bound_if)
{
SKIP_NONLOCAL(skb);
- if (skb->sk->sk_bound_dev_if == 0) {
+ if (skb->sk->sk_bound_dev_if == 0) {
dst->value = (unsigned long) "any";
dst->len = 3;
- } else {
+ } else {
struct net_device *dev;
- dev = dev_get_by_index(&init_net, skb->sk->sk_bound_dev_if);
+ rcu_read_lock();
+ dev = dev_get_by_index_rcu(&init_net, skb->sk->sk_bound_dev_if);
*err = var_dev(dev, dst);
- if (dev)
- dev_put(dev);
- }
+ rcu_read_unlock();
+ }
}
META_COLLECTOR(int_sk_refcnt)