aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric Dumazet <eric.dumazet@gmail.com>2010-03-09 15:03:38 -0500
committerDavid S. Miller <davem@davemloft.net>2010-03-17 00:23:19 -0400
commit2fb3573dfbca0bd853ddc1e47617eb446fa3deae (patch)
tree790601c538c5b9d1d80bb5f2779c77ebb54354db
parent14bb4789833a2e2610f30e2d3e1451701ac96ec1 (diff)
net: remove rcu locking from fib_rules_event()
We hold RTNL at this point and dont use RCU variants of list traversals, we dont need rcu_read_lock()/rcu_read_unlock() Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/core/fib_rules.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index 9a24377146bf..2ff34894357a 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -108,7 +108,7 @@ fib_rules_register(struct fib_rules_ops *tmpl, struct net *net)
108 struct fib_rules_ops *ops; 108 struct fib_rules_ops *ops;
109 int err; 109 int err;
110 110
111 ops = kmemdup(tmpl, sizeof (*ops), GFP_KERNEL); 111 ops = kmemdup(tmpl, sizeof(*ops), GFP_KERNEL);
112 if (ops == NULL) 112 if (ops == NULL)
113 return ERR_PTR(-ENOMEM); 113 return ERR_PTR(-ENOMEM);
114 114
@@ -123,7 +123,6 @@ fib_rules_register(struct fib_rules_ops *tmpl, struct net *net)
123 123
124 return ops; 124 return ops;
125} 125}
126
127EXPORT_SYMBOL_GPL(fib_rules_register); 126EXPORT_SYMBOL_GPL(fib_rules_register);
128 127
129void fib_rules_cleanup_ops(struct fib_rules_ops *ops) 128void fib_rules_cleanup_ops(struct fib_rules_ops *ops)
@@ -157,7 +156,6 @@ void fib_rules_unregister(struct fib_rules_ops *ops)
157 156
158 call_rcu(&ops->rcu, fib_rules_put_rcu); 157 call_rcu(&ops->rcu, fib_rules_put_rcu);
159} 158}
160
161EXPORT_SYMBOL_GPL(fib_rules_unregister); 159EXPORT_SYMBOL_GPL(fib_rules_unregister);
162 160
163static int fib_rule_match(struct fib_rule *rule, struct fib_rules_ops *ops, 161static int fib_rule_match(struct fib_rule *rule, struct fib_rules_ops *ops,
@@ -220,7 +218,6 @@ out:
220 218
221 return err; 219 return err;
222} 220}
223
224EXPORT_SYMBOL_GPL(fib_rules_lookup); 221EXPORT_SYMBOL_GPL(fib_rules_lookup);
225 222
226static int validate_rulemsg(struct fib_rule_hdr *frh, struct nlattr **tb, 223static int validate_rulemsg(struct fib_rule_hdr *frh, struct nlattr **tb,
@@ -613,7 +610,7 @@ static int fib_nl_dumprule(struct sk_buff *skb, struct netlink_callback *cb)
613 break; 610 break;
614 611
615 cb->args[1] = 0; 612 cb->args[1] = 0;
616 skip: 613skip:
617 idx++; 614 idx++;
618 } 615 }
619 rcu_read_unlock(); 616 rcu_read_unlock();
@@ -685,7 +682,6 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event,
685 struct fib_rules_ops *ops; 682 struct fib_rules_ops *ops;
686 683
687 ASSERT_RTNL(); 684 ASSERT_RTNL();
688 rcu_read_lock();
689 685
690 switch (event) { 686 switch (event) {
691 case NETDEV_REGISTER: 687 case NETDEV_REGISTER:
@@ -699,8 +695,6 @@ static int fib_rules_event(struct notifier_block *this, unsigned long event,
699 break; 695 break;
700 } 696 }
701 697
702 rcu_read_unlock();
703
704 return NOTIFY_DONE; 698 return NOTIFY_DONE;
705} 699}
706 700