diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2010-03-09 15:03:38 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2010-03-17 00:23:19 -0400 |
commit | 2fb3573dfbca0bd853ddc1e47617eb446fa3deae (patch) | |
tree | 790601c538c5b9d1d80bb5f2779c77ebb54354db | |
parent | 14bb4789833a2e2610f30e2d3e1451701ac96ec1 (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.c | 10 |
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 | |||
127 | EXPORT_SYMBOL_GPL(fib_rules_register); | 126 | EXPORT_SYMBOL_GPL(fib_rules_register); |
128 | 127 | ||
129 | void fib_rules_cleanup_ops(struct fib_rules_ops *ops) | 128 | void 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 | |||
161 | EXPORT_SYMBOL_GPL(fib_rules_unregister); | 159 | EXPORT_SYMBOL_GPL(fib_rules_unregister); |
162 | 160 | ||
163 | static int fib_rule_match(struct fib_rule *rule, struct fib_rules_ops *ops, | 161 | static 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 | |||
224 | EXPORT_SYMBOL_GPL(fib_rules_lookup); | 221 | EXPORT_SYMBOL_GPL(fib_rules_lookup); |
225 | 222 | ||
226 | static int validate_rulemsg(struct fib_rule_hdr *frh, struct nlattr **tb, | 223 | static 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: | 613 | skip: |
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 | ||