We have to hold rtnl lock for fib_rules_unregister()
otherwise the following race could happen:
fib_rules_unregister(): fib_nl_delrule():
... ...
... ops = lookup_rules_ops();
list_del_rcu(&ops->list);
list_for_each_entry(ops->rules) {
fib_rules_cleanup_ops(ops); ...
list_del_rcu(); list_del_rcu();
}
Note, net->rules_mod_lock is actually not needed at all,
either upper layer netns code or rtnl lock guarantees
we are safe.
Cc: Alexander Duyck <alexander.h.duyck@redhat.com>
Cc: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
|
||
|---|---|---|
| .. | ||
| netfilter | ||
| af_decnet.c | ||
| dn_dev.c | ||
| dn_fib.c | ||
| dn_neigh.c | ||
| dn_nsp_in.c | ||
| dn_nsp_out.c | ||
| dn_route.c | ||
| dn_rules.c | ||
| dn_table.c | ||
| dn_timer.c | ||
| Kconfig | ||
| Makefile | ||
| README | ||
| sysctl_net_decnet.c | ||
| TODO | ||
Linux DECnet Project
======================
The documentation for this kernel subsystem is available in the
Documentation/networking subdirectory of this distribution and also
on line at http://www.chygwyn.com/DECnet/
Steve Whitehouse <SteveW@ACM.org>